Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 25-04-2024 14:35:49

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 101

[Python] Script appliquant la règle du jeu du demandeur E67675

Bonjour

La discussion en référence est Ici
Avec, randint(a,b), je tire tire aléatoirement un nombre entier entre a et b (eux-mêmes entiers).
Ici 0 correspondra à une mauvaise réponse et 1, à une bonne...
Voici le code fait rapidement :

from random import randint

S,Sa,Comm=0,0,["  Mauvaise réponse    ", "  Bonne Réponse       "]
for ess in range(1,21):
    rep=randint(0,1)
    Sa=S
    if Sa>=0:        
        if rep==1:
            S+=1
        else:
            S=-1
    elif Sa<=0:
        if rep==1:
           S=1
        else:
            S-=1          
    print ("Réponse n°","%2i" % ess, " Ancienne somme","%2i" %Sa,Comm[rep],"Nouvelle Somme ","%2i" %S)
 

Testable (copier/coller le code) sur un site de Python en ligne : https://www.online-python.com/ si vous n'avez pas Python chez vous.

Exemple de Sortie :


Réponse n°  1  Ancienne somme  0   Bonne Réponse        Nouvelle Somme   1
Réponse n°  2  Ancienne somme  1   Mauvaise réponse     Nouvelle Somme  -1
Réponse n°  3  Ancienne somme -1   Mauvaise réponse     Nouvelle Somme  -2
Réponse n°  4  Ancienne somme -2   Mauvaise réponse     Nouvelle Somme  -3
Réponse n°  5  Ancienne somme -3   Mauvaise réponse     Nouvelle Somme  -4
Réponse n°  6  Ancienne somme -4   Mauvaise réponse     Nouvelle Somme  -5
Réponse n°  7  Ancienne somme -5   Mauvaise réponse     Nouvelle Somme  -6
Réponse n°  8  Ancienne somme -6   Bonne Réponse        Nouvelle Somme   1
Réponse n°  9  Ancienne somme  1   Bonne Réponse        Nouvelle Somme   2
Réponse n° 10  Ancienne somme  2   Mauvaise réponse     Nouvelle Somme  -1
Réponse n° 11  Ancienne somme -1   Bonne Réponse        Nouvelle Somme   1
Réponse n° 12  Ancienne somme  1   Mauvaise réponse     Nouvelle Somme  -1
Réponse n° 13  Ancienne somme -1   Bonne Réponse        Nouvelle Somme   1
Réponse n° 14  Ancienne somme  1   Mauvaise réponse     Nouvelle Somme  -1
Réponse n° 15  Ancienne somme -1   Mauvaise réponse     Nouvelle Somme  -2
Réponse n° 16  Ancienne somme -2   Mauvaise réponse     Nouvelle Somme  -3
Réponse n° 17  Ancienne somme -3   Bonne Réponse        Nouvelle Somme   1
Réponse n° 18  Ancienne somme  1   Mauvaise réponse     Nouvelle Somme  -1
Réponse n° 19  Ancienne somme -1   Bonne Réponse        Nouvelle Somme   1
Réponse n° 20  Ancienne somme  1   Mauvaise réponse     Nouvelle Somme  -1

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#2 25-04-2024 18:27:58

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 101

Re : [Python] Script appliquant la règle du jeu du demandeur E67675

Re,

Nouveau code plus "ramassé" :

from random import randint

S,Comm=0,["  Mauvaise réponse    ", "  Bonne réponse       "]
for n in range(1,21):
    rp=randint(0,1)
    Sa=S
    if Sa>=0:
        S=S+1 if rp==1 else -1        
    elif Sa<=0:
        S=S-1 if rp==0 else 1          
    print ("Réponse %2i"%n," Ancien score %2i"%Sa,Comm[rp],"Nouveau score %2i" %S)
 

Exemple de sortie:


Réponse  1  Ancien score  0   Mauvaise réponse     Nouveau score  -1
Réponse  2  Ancien score -1   Bonne réponse        Nouveau score   1
Réponse  3  Ancien score  1   Bonne réponse        Nouveau score   2
Réponse  4  Ancien score  2   Mauvaise réponse     Nouveau score  -1
Réponse  5  Ancien score -1   Mauvaise réponse     Nouveau score  -2
Réponse  6  Ancien score -2   Mauvaise réponse     Nouveau score  -3
Réponse  7  Ancien score -3   Mauvaise réponse     Nouveau score  -4
Réponse  8  Ancien score -4   Mauvaise réponse     Nouveau score  -5
Réponse  9  Ancien score -5   Mauvaise réponse     Nouveau score  -6
Réponse 10  Ancien score -6   Bonne réponse        Nouveau score   1
Réponse 11  Ancien score  1   Mauvaise réponse     Nouveau score  -1
Réponse 12  Ancien score -1   Bonne réponse        Nouveau score   1
Réponse 13  Ancien score  1   Bonne réponse        Nouveau score   2
Réponse 14  Ancien score  2   Bonne réponse        Nouveau score   3
Réponse 15  Ancien score  3   Bonne réponse        Nouveau score   4
Réponse 16  Ancien score  4   Mauvaise réponse     Nouveau score  -1
Réponse 17  Ancien score -1   Mauvaise réponse     Nouveau score  -2
Réponse 18  Ancien score -2   Bonne réponse        Nouveau score   1
Réponse 19  Ancien score  1   Mauvaise réponse     Nouveau score  -1
Réponse 20  Ancien score -1   Mauvaise réponse     Nouveau score  -2

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#3 27-04-2024 20:05:58

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 101

Re : [Python] Script appliquant la règle du jeu du demandeur E67675

Re,

Plus court en reprenant l'idée de Ernst, montrant que j'avais tort : il y a bien une formule.
Je reprends les sorties aléatoires des posts #1 et #2 que je collationne dans la liste Rep et je relance...

S,Comm=0,["  Mauvaise réponse    ", "  Bonne réponse       "]
Rep=[1,-1,-1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1]
#Rep=[-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,1,1,-1,-1,1,-1,-1]
for x in range(0,20):
    rp=Rep[x]
    Sa=S
    S=S/2+(abs(S)*abs(rp))/(2*rp)+rp
    print ("Réponse %2i"%(x+1)," Ancien score %2i"%Sa,Comm[rp+(rp<0)],"Nouveau score %2i" %S)
 

Sortie (conforme à celle du post #1):


Réponse  1  Ancien score  0   Bonne réponse        Nouveau score  1
Réponse  2  Ancien score  1   Mauvaise réponse     Nouveau score -1
Réponse  3  Ancien score -1   Mauvaise réponse     Nouveau score -2
Réponse  4  Ancien score -2   Mauvaise réponse     Nouveau score -3
Réponse  5  Ancien score -3   Mauvaise réponse     Nouveau score -4
Réponse  6  Ancien score -4   Mauvaise réponse     Nouveau score -5
Réponse  7  Ancien score -5   Mauvaise réponse     Nouveau score -6
Réponse  8  Ancien score -6   Bonne réponse        Nouveau score  1
Réponse  9  Ancien score  1   Bonne réponse        Nouveau score  2
Réponse 10  Ancien score  2   Mauvaise réponse     Nouveau score -1
Réponse 11  Ancien score -1   Bonne réponse        Nouveau score  1
Réponse 12  Ancien score  1   Mauvaise réponse     Nouveau score -1
Réponse 13  Ancien score -1   Bonne réponse        Nouveau score  1
Réponse 14  Ancien score  1   Mauvaise réponse     Nouveau score -1
Réponse 15  Ancien score -1   Mauvaise réponse     Nouveau score -2
Réponse 16  Ancien score -2   Mauvaise réponse     Nouveau score -3
Réponse 17  Ancien score -3   Bonne réponse        Nouveau score  1
Réponse 18  Ancien score  1   Mauvaise réponse     Nouveau score -1
Réponse 19  Ancien score -1   Bonne réponse        Nouveau score  1
Réponse 20  Ancien score  1   Mauvaise réponse     Nouveau score -1

Dans le code je déplace le # (commentaire), de la 2e ligne de Rep à la première :
Sortie (conforme à celle du post #2)


Réponse  1  Ancien score  0   Mauvaise réponse     Nouveau score -1
Réponse  2  Ancien score -1   Bonne réponse        Nouveau score  1
Réponse  3  Ancien score  1   Bonne réponse        Nouveau score  2
Réponse  4  Ancien score  2   Mauvaise réponse     Nouveau score -1
Réponse  5  Ancien score -1   Mauvaise réponse     Nouveau score -2
Réponse  6  Ancien score -2   Mauvaise réponse     Nouveau score -3
Réponse  7  Ancien score -3   Mauvaise réponse     Nouveau score -4
Réponse  8  Ancien score -4   Mauvaise réponse     Nouveau score -5
Réponse  9  Ancien score -5   Mauvaise réponse     Nouveau score -6
Réponse 10  Ancien score -6   Bonne réponse        Nouveau score  1
Réponse 11  Ancien score  1   Mauvaise réponse     Nouveau score -1
Réponse 12  Ancien score -1   Bonne réponse        Nouveau score  1
Réponse 13  Ancien score  1   Bonne réponse        Nouveau score  2
Réponse 14  Ancien score  2   Bonne réponse        Nouveau score  3
Réponse 15  Ancien score  3   Bonne réponse        Nouveau score  4
Réponse 16  Ancien score  4   Mauvaise réponse     Nouveau score -1
Réponse 17  Ancien score -1   Mauvaise réponse     Nouveau score -2
Réponse 18  Ancien score -2   Bonne réponse        Nouveau score  1
Réponse 19  Ancien score  1   Mauvaise réponse     Nouveau score -1
Réponse 20  Ancien score -1   Mauvaise réponse     Nouveau score -2

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#4 27-04-2024 20:40:45

Bernard-maths
Membre
Lieu : 34790 Grabels
Inscription : 18-12-2020
Messages : 1 417

Re : [Python] Script appliquant la règle du jeu du demandeur E67675

Bonsoir !

Hum ... pour moi il n'y a pas de formule, mais un programme de simulation ...

B-m


Ma philosophie est immuable : l'immobilisme tue ...
Les Anciens ont trouvé le plus facile ... il nous reste le plus dur !

Hors ligne

#5 27-04-2024 21:31:53

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 101

Re : [Python] Script appliquant la règle du jeu du demandeur E67675

B'soir,

Hum... HUM.... Comment ça pas une formule ?? Oui, j'ai bien réalisé des simulations, mais sur la base de la formule proposée par Ernst, sans cette formule le nouveau script ne fonctionne pas.
Cette formule remplace tous les if des scripts précédents, ou tous tes SI...
$\forall x \in \{-1,1\}, S=\dfrac{S}{2} +\dfrac{|S|\times|x|}{2x}+x$.

Ce soir, il est tard, mais demain je sors mon tableur OpenOffice Calc (produit libre et gratuit) et je reproduira la même simulation qu'en Python avec cette formule sans souci et sans Si (comme le Puy à l'orthographe près).
N-B : Ce sera parfaitement reproductible sur Excel (produit  propriétaire et payant) sans  modification de syntaxe...


@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#6 28-04-2024 13:45:25

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 101

Re : [Python] Script appliquant la règle du jeu du demandeur E67675

Garanti sans SI :
r96k.png

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quatre-vingt dix-huit moins quatre-vingt
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums