Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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