Bonjour
Je vous propose l'exercice suivant :
deux robots s'opposent dans une course en ligne droite de 100 metres , à l'instant t =0 les deux robots se trouvent sur une ligne de départ et lorsque le top est donné les deux robots s'elancent , le robot A se déplace de la facon suivante :
à chaque seconde le robot A peut ; soit effectuer 2 metres de déplacement avec une proba de 5/7 soit 1 metre de déplacement avec la proba contraire.
à chaque seconde le robot B peut ; soit effectuer 0,5 metres de déplacement avec une proba de 1/7 soit 2 metres de déplacement avec la proba contraire.
Vous misez sur quel robot ?
Je n'aime ni la réponse de larrech ni celle de dpi.
Supposons que l'on propose un pari gratuit du genre : si A gagne vous gagnez 8€ si B gagne vous gagnez 1€.
Pariez vous sur A ou sur B ?
Bonjour,
A mise égale sur les paris ... il faut évidemment parier sur le robot 2 qui va statistiquement arriver avec 2,33 s d'avance en temps et 4 m en distance.
Mais ... ce qui se cache derrière l'intervention de Verdurin est intéressante.
Elle revient à demander quelle est la probabilité que le robot 1 gagne la course ?
La question pourrait par exemple devenir :
Si tu paries sur le robot 1 et qu'il gagne tu auras 8 euros.
Si tu paries sur le robot 2 et qu'il gagne tu auras 1 euros.
Quel robot vaut-il mieux choisir ?
C'est évidemment plus compliqué que le problème posé initialement.
Il semblerait que le Robot soit programmé pour gagner 96 fois sur 100 donc en jouant 100 fois je gagnerais 96 € et je perdrais 32€
Bonjour,
Je n'ai pas essayé de calculer la probabilité que le robot 1 gagne la course ... mais j'ai écrit un mini programme de test en Python qui simule 10000 courses et compte le nombre de fois que le robot 1 gagne.
Celui que cela intéresse, le programme est :
import random
cmpt = 0
for i in range(0,10000):
total1 = 0
total2 = 0
while total1 < 100 :
r1 = random.choice([1, 2, 3, 4, 5, 6, 7])
d1 = 1
if (r1>2):
d1 = 2
r2 = random.choice([1, 2, 3, 4, 5, 6, 7])
d2 = 0.5
if (r2 > 1):
d2 = 2
total1 = total1 + d1
total2 = total2 + d2
if (total1 >= total2):
cmpt = cmpt + 1
print (cmpt)
Donc le robot A qui fait en moyenne 12/7 m/s gagne plus souvent
que le robot B qui fait en moyenne 12.5/7m/s.
Ce résultat est contre intuitif.
Mais verdurin qui a posé cette question annexe va nous confirmer...
Bonjour,
Il faut se méfier des raisonnements avec l'espérance de la distance parcourue en 1 seconde.
Prenons l'exemple simple suivant
1) Le robot R2D2 avance à la vitesse constante de 1m à chaque seconde.
2) Le robot C3P0 avance en une seconde de 10m. avec probabilité p = 9,5% et de 0,1m. avec probabilité de 1-p = 90,5%. L'espérance de son avancée en une seconde est donc à peu près 1,04m.
Lequel des deux robots va arriver le plus souvent en tête aux 100m. ? Bien évidemment C3P0, me direz vous, puisqu'il fait en moyenne plus de chemin en 1s. que R2D2.
Eh bien non, c'est R2D2 qui arrivera le premier dans 51,9% des cas !
Il suffit pour le vérifier de calculer
Bonjour,
Merci GBZM pour cette contribution claire et constructive...
Merci aussi à candide2, c'est très intéressant.
Bonjour dpi,
Ton message 27-01-24 à 17:53
Ce n'est pas cela que j'ai écrit.
Les simulations donnent :
- course gagnée par le robot A dans environ 20 % des cas.
- arrivée ex aequo dans environ 3 % des cas
- course gagnée par le robot B dans environ 77 % des cas
C'est bien le robot B qui arrive le plus souvent en tête ...
MAIS si la "récompense" donnée si on choisit le bon robot est différente suivant le robot choisi (comme suggéré par verdurin)
Donc si par exemple les récompenses pour bon choix du robot sont :
Si tu paries sur le robot 1 et qu'il gagne tu auras 8 euros.
Si tu paries sur le robot 2 et qu'il gagne tu auras 1 euros.
Alors, en moyenne, sur un grand nombre de courses, c'est le robot 1 qu'il faut choisir comme vainqueur pour avoir le plus grand gain.
Bonjour candide2
Je suis d'accord ,je suis simplement surpris du pourcentage de 20% car en moyenne il perd 0.07 m/s ,j'aurais dis sans simulation * 4%... j'ai droit à 11%
*je vais chercher....
Simulation sur Excel
recherche aléatoire de 1 à 2 exemple a=1.478129
Robot A 2 fois 1 et 2 fois 2 soit kA=1.285714
si aA <kA -->1 sinon 2
pareil pour B 1 fois 0.5 et 6 fois 2 soit kB= 1.14285714
si aB>kB--->2 sinon 0.5
En testant sur 100 * et en totalisant A ne gagne que 3à 5 fois.
Ce qui semblerait mon 4 % du départ.
*je peux essayer au delà (mémoire...)
Bonjour dpi,
Je ne comprends rien à ta proposition de simulation.
J'ai aussi testé sur Excel avec la fonction alea() ... en tenant évidemment compte de l'énoncé les (5/7, 2/7, 1/7 et 6/7 et les longueurs qui y sont associées)
... et les résultats sont du même ordre de grandeur que ceux dans ma simulation par Python.
Le gros avantage par Python est de pouvoir simuler un très grand nombre de courses.
Rebonjour
Pour info,
J'ai noté les résultats de 20 courses résultats de mon programme de simulation (voir tableau)
On y voit, que sur ces 20 courses, 15 sont gagnées par le Robot B(75%) et 5 sont gagnées par le robot A (25 %)
Si on fait la moyenne des distances parcourues par les robots sur ces 20 courses et qu'on divise les résultats par 20 ... on trouve qu'en moyenne le robot B est arrivé avec une avance de 100,2 - 96,9 = 3,3 m d'avance sur le robot A...
Ce qui colle, compte tenu de la dispersion statistique, avec la moyenne de 4 m d'avance calculée par simple différence des vitesses moyennes (méthode piégeuse comme l'a montré CBZM)
Ici, aussi, même sur 20 courses, on doit déjà bien que même avec une "moyenne" de vitesse bien supérieure pour le Robot B, le pourcentage de victoires du robot A est loin d'être "petite".
Et sur plusieurs séries de 10000 courses ... la simulation donne les résultats que j'ai déjà donné.
Rebonjour,
Pour en finir (pour moi) avec ce problème, voila une copie du programme modifié pour afficher le nombre de courses sur 10000 gagnées par le robot A ... avec en plus la distance moyenne parcourue par course pour chacun des robots.
Les résultats (à droite de l'image) montrent bien que sur un grand nombre de courses, le robot B arrive en moyenne avec 4 m d'avance comme calculé ...
Ce qui donne quand même un peu plus de 20 % de victoires au robot A.
Je pense que cette simulation est très proche de la réalité (celle imposée par l'énoncé).
Bonjour,
Je regretterais toujours de ne pas avoir appris à programmer
Voici deux extraits de ma simulation
A fourchette 2 à 6 fois /100
Bonjour dpi,
Je ne comprends pas tes simulations.
Tu ne peux pas utiliser le même alea() pour les 2 robots, il en faut des différents pour les 2 robots ... et ces alea() doivent être relancés à chaque pas des robots.
Voila par exemple sur Excel ce que donne une course :
Dans cette course, c'est le robot B qui gagne et arrive avec 4 m d'avance sur le robot A
A chaque pas de chacun des robots, la distance qu'ils vont parcourir chacun est imposée par un alea différent pour chaque robot et il est tenu compte des probabilité (5/7, 2/7, ...) pour calculer les distances à chaque pas.
En fin de course, il est testé lequel robot atteint ou dépasse 100 m avant l'autre et celui-là est déclaré vainqueur.
Si on lance ce programme de multiple fois et qu'on comptabilise le pourcentage de victoires ... on retrouve bien que cela tourne pour un peu plus que 20 % de victoires pour le robot A...
Je ne peux rien dire d'autre, pour moi, ce résultat ,soit victoires du robot A sur une grande quantité de courses est bien de un peu plus que 20 %
Rebonjour,
Je n'ai pas expliqué ce que je fais avec les alea pour déterminer la taille du pas des robots.
Les alea() donnent un nombre aléatoire compris dans ]0 ; 1[
Si le alea() du robot A est <= 2/7, la distance d1 de ce pas pour le robot A est de 1(m) et, bien entendu, si le alea() du robot A est > 2/7, la distance d1 de ce pas pour le robot A est de 2 (m)
Et si le alea() du robot B est <= 1/7, la distance d2 de ce pas pour le robot B est de 0,5(m) et, bien entendu, si le alea() du robot B est > 1/7, la distance d1 de ce pas pour le robot A est de 2 (m)
Voici ma version juste pour le fun
Distances moyennes: 95.979m, 99.984m. Différence: 4.005m
Probabilité de victoire: A(20.25%), B(77.21%), Egalité(2.54%).
Oops, petite erreur: Si les deux robots traversent la ligne en même temps, il y a égalité même si l'un des robots fini plus loin.
Correction:
Distances moyennes: 95.978m, 99.981m. Différence: 4.003m
Probabilité de victoire: A(18.39%), B(71.66%), Egalité(9.95%).
Bonjour LittleFox
Le problème des ex aequo est un peu plus compliqué qu'il n'y parait, mais l'important ici était de montrer que le pourcentage de victoires du robot A est bien plus grand que celui calculé par le rapport des vitesses moyennes sur un grand nombre de courses.
Il y a vrai ex aquo si les 2 robots arrivent à (ou dépassent ?) 100 m au même moment.
Si ils dépassent les 100 m tous les deux sur le même pas, il faut faire un calcul pour voir qui gagne... et dans ce cas, il y aura très peu de vrais ex equo.
Exemple:
Le Robot A est à 99 m et fait un dernier pas de 2 m
Le Robot B est à 98,5 m et fait un dernier pas de 2 m
Les 2 robots passent les 100 m sur le "même pas", mais il ne sont pas ex aequo
La vitesse moyenne du Robot A sur le dernier pas est 2m/s
Il passe la ligne des 100 m après une durée de 0,5 s (comptée à partir du début du dernier pas)
La vitesse moyenne du Robot B sur le dernier pas est 2m/s
Il passe la ligne des 100 m après une durée de 0,75 s (comptée à partir du début du dernier pas)
Il n'y a pas ex aequo, c'est le robot A qui gagne dans ce cas.
Il faudrait aussi savoir si le robot qui gagne doit arriver à ou dépasser le premier la barre des 100 m.
Mais ceci est marginal, juste amusant à simuler si on veut pousser dans le détail.
Ben voilà !
En ayant deux colonnes d'aléatoires,le nombre de A progresse
nettement et je suis donc d'accord avec tous les excellents participants.
bonjour
j'ai effectué une petite simulation qui donne :
Sub course_robot()
Dim a, b, s, e As Long
Dim p, q As Double
Randomize
cpa = 0
cpb = 0
cpte = 0
Do
e = e + 1
a = 0
b = 0
s = 0
Do
p = Rnd
If p >= 0 And p < 5 / 7 Then
a = a + 2
Else
a = a + 1
End If
q = Rnd
If q >= 0 And q < 1 / 7 Then
b = b + 0.5
Else
b = b + 2
End If
Loop Until a >= 100 Or b >= 100 'jusqu'a ce que A dépasse ou est égal à 100 ou B dépasse ou est égal à 100 m au meme instant
If a > b Then
cpta = cpta + 1
End If
If b > a Then
cptb = cptb + 1
End If
If a = 100 And b = 100 Then
cpte = cpte + 1 'cas d'égalité
End If
Loop Until e = 1000000
MsgBox "la probabilité que A gagne = " & cpta / e & Chr(10) & "la probabilité que B gagne est " & cptb / e & " cas d'égalité : " & cpte / e 'retourne P(gagne)=0.198 P(B gagne)=0,7719 , P(egalité)= 0.0159
End Sub
Puisque chacun y va de sa simulation, pourquoi pas moi ?
Mais je vais plutôt m'attacher à mettre en évidence un phénomène contre-intuitif.
J'ai déjà introduit mes deux robots, R2D2 qui avance très régulièrement de 1m par seconde et arrive au 100m exactement en 100 secondes ; et puis C3P0, beaucoup plus fantasque, qui à chaque seconde avance soit de 10m avec probabilité de 9,6% (j'ai un peu changé par rapport au précédent épisode) soit de 10cm avec probabilité de 90,4%.. En moyenne donc 1,05m pas seconde.
Je simule donc la course de C3P0. Je trouve que son temps moyen pour faire les 100m est un peu en-dessous des 100s de R2D2. Et pourtant, il gagne moins souvent la course que R2D2 !
import random as rd
def course(grand_pas,prob,petit_pas,dist) :
pos=0 ; temps=0
while pos < dist :
p=rd.random()
if p<prob :
pos+=grand_pas
der=grand_pas
else :
pos+=petit_pas
der=petit_pas
temps+=1
return temps - (pos-dist)/der
gagne=0 ; tempstot=0 ; n=10**6
for _ in range(n) :
temps=course(10,0.096,1/10,100)
tempstot+=temps
if temps <= 100 : gagne+=1
print("C3PO gagne dans {:.2%} des cas ; son temps moyen est {:.2f}s"\
.format(gagne/n,tempstot/n))
Bonjour GBZM,
Si tu n'y vois pas d'inconvénient, je te pique ton exercice dans sa version calcul théorique.
Depuis le temps que je casse les pieds à mes étudiants sur le fait que la loi binomiale n'étant pas symétrique (si p différent de 0,5), son approximation par une loi normale est forcément très approximative sans vraiment réussir à les convaincre.
C'est parfait !
Pour ceux qui trouvent cela contre-intuitif : lorsque C3P0 cède trop souvent au coté obscur de la force et avance de 10m, il va obtenir quelques valeurs hautes sur la distance parcourue en 100s et cela va tirer la moyenne de cette distance parcourue vers le haut donc le temps moyen pour parcourir une distance vers le bas.
Bonjour,
Pour le problème de GBZM du 29-01-24 à 21:49
Mon programme modifié pour prendre les conditions de ce problème donne :
Sur 500000 courses, le robot C3PO en a gagné 49.4556 %
Sur 500000 courses, nombre d'ex aequo 0
temps moyen du robot C3PO : 95.21832265463586 s
Résultats quasi équivalents à ceux de CBZM pour le pourcentage de victoires ... mais pas pour le temps moyen.
@Vassilia : bien sûr !
@candide2 : J'en conclus que tu te trompes sur le calcul du temps moyen dans ta simulation. J'ai refait 20 paquets de 50 000 courses :
C3PO gagne dans 49.57% des cas ; son temps moyen est 99.54s
C3PO gagne dans 49.63% des cas ; son temps moyen est 99.45s
C3PO gagne dans 49.35% des cas ; son temps moyen est 99.66s
C3PO gagne dans 49.53% des cas ; son temps moyen est 99.54s
C3PO gagne dans 49.71% des cas ; son temps moyen est 99.51s
C3PO gagne dans 49.68% des cas ; son temps moyen est 99.52s
C3PO gagne dans 49.70% des cas ; son temps moyen est 99.56s
C3PO gagne dans 49.60% des cas ; son temps moyen est 99.54s
C3PO gagne dans 49.75% des cas ; son temps moyen est 99.49s
C3PO gagne dans 49.78% des cas ; son temps moyen est 99.43s
C3PO gagne dans 49.54% des cas ; son temps moyen est 99.57s
C3PO gagne dans 48.94% des cas ; son temps moyen est 99.74s
C3PO gagne dans 50.06% des cas ; son temps moyen est 99.31s
C3PO gagne dans 49.42% des cas ; son temps moyen est 99.54s
C3PO gagne dans 49.62% des cas ; son temps moyen est 99.58s
C3PO gagne dans 49.63% des cas ; son temps moyen est 99.55s
C3PO gagne dans 49.23% des cas ; son temps moyen est 99.62s
C3PO gagne dans 49.59% des cas ; son temps moyen est 99.43s
C3PO gagne dans 49.41% des cas ; son temps moyen est 99.61s
C3PO gagne dans 49.40% des cas ; son temps moyen est 99.52s
Bonjour,
Pas d'accord CBZM, il ne sert à rien de recommencer plusieurs simulations si il y a quelque chose qui ne va pas dans le programme.
(Je n'ai pas cherché dans ton programme)
Ma simulation donne un temps moyen de 95.2 s environ ...
... et c'est en parfait accord avec le calcul du rapport de vitesses moyennes calculées à partir des données de l'énoncé.
Sur un grand nombre de courses :
La vitesse moyenne du robot "calme" est 1 m/s
Le pas moyen de C3PO est 9,6/100 * 10 + (100-9,6)/100) * 0,1 = 1,0504 m
Il parcourt donc les 100 m en 100/1,0504 = 95,2 pas (de chacun 1 s)
Donc sur un très grand nombre de courses, la vitesse moyenne de C3PO doit être 95,2 s (à un poil près)
... c'est le résultat que donne ma simulation, ce qui me pousse à penser que c'est correct.
Correction :
Donc sur un très grand nombre de courses, la durée moyenne de course de C3PO doit être 95,2 s (à un poil près)
Rebonjour,
Juste pour info, voici 10 paquets de résultats de 50000 courses donnés par ma simulation :
Sur 50000 courses, le robot A en a gagné 49.608 %
Sur 50000 courses, nombre d'ex aequo 0
temps moyen du robot A : 95.34200894765702 s
Sur 50000 courses, le robot A en a gagné 49.668 %
Sur 50000 courses, nombre d'ex aequo 0
temps moyen du robot A : 95.24330005767408 s
Sur 50000 courses, le robot A en a gagné 49.508 %
Sur 50000 courses, nombre d'ex aequo 0
temps moyen du robot A : 95.23575697351015 s
Sur 50000 courses, le robot A en a gagné 49.698 %
Sur 50000 courses, nombre d'ex aequo 0
temps moyen du robot A : 95.22390596921097 s
Sur 50000 courses, le robot A en a gagné 49.564 %
Sur 50000 courses, nombre d'ex aequo 0
temps moyen du robot A : 95.26575678469436 s
Sur 50000 courses, le robot A en a gagné 49.694 %
Sur 50000 courses, nombre d'ex aequo 0
temps moyen du robot A : 95.27240600724535 s
Sur 50000 courses, le robot A en a gagné 49.322 %
Sur 50000 courses, nombre d'ex aequo 0
temps moyen du robot A : 95.31609830185549 s
Sur 50000 courses, le robot A en a gagné 49.654 %
Sur 50000 courses, nombre d'ex aequo 0
temps moyen du robot A : 95.08944236565206 s
Sur 50000 courses, le robot A en a gagné 49.68 %
Sur 50000 courses, nombre d'ex aequo 0
temps moyen du robot A : 95.08639892517373 s
Sur 50000 courses, le robot A en a gagné 49.534 %
Sur 50000 courses, nombre d'ex aequo 0
temps moyen du robot A : 95.19644452703216 s
C'est cohérent ... mais la répétition des résultats ne prouve rien, si ce n'est que le programme répète bien les instructions d'une fois à l'autre.
Soit c'est tout juste, soit, il y a la même erreur partout.
Pour voir où tu t'es trompé, il faudrait savoir comment tu calcules ce temps moyen. Nulle part dans ton programme python tu ne calcules de temps.
Dans le programme que j'ai écrit, c'est clair : le temps retourné est le nombre de pas d'une seconde fait pour dépasser les 100 m, diminué de l'excès par rapport au 100m divisé par la longueur du dernier pas. Je prends ensuite tout simplement la moyenne de ces temps.
PS. Je ne sui pas d'accord avec ton calcul théorique de l'espérance du temps à partir de l'espérance de la longueur parcourue en 1 seconde.
Rebonjour CBZM,
J'ai regardé ton programme ... et je ne trouve rien à lui reprocher.
Il m'étonne quant même que sur un très grand nombre de courses, le temps moyen de la course ne soit pas la longueur de la course/vitesse moyenne du robot sur temps très long.
Si j'ai le temps, je regarderai mon programme de plus près (qui n'est pas celui que j'ai donné pour le problème initial, il est bien entendu adapté) pour voir si qui pourrait clocher.
Voila mes résultats en corrigeant une comparaison dans mon programme ...
Sur 500000 courses, le robot A en a gagné 49.594 %
Sur 500000 courses, nombre d'ex aequo 0
temps moyen du robot A : 99.53475040000174 s
Sur 500000 courses, le robot A en a gagné 49.45 %
Sur 500000 courses, nombre d'ex aequo 0
temps moyen du robot A : 99.41756440000167 s
Sur 500000 courses, le robot A en a gagné 49.032 %
Sur 500000 courses, nombre d'ex aequo 0
temps moyen du robot A : 99.75207580000168 s
Sur 500000 courses, le robot A en a gagné 49.254 %
Sur 500000 courses, nombre d'ex aequo 0
temps moyen du robot A : 99.6694082000015 s
Sur 500000 courses, le robot A en a gagné 49.544 %
Sur 500000 courses, nombre d'ex aequo 0
temps moyen du robot A : 99.38624180000161 s
Sur 500000 courses, le robot A en a gagné 49.664 %
Sur 500000 courses, nombre d'ex aequo 0
temps moyen du robot A : 99.36437700000155 s
Sur 500000 courses, le robot A en a gagné 49.574 %
Sur 500000 courses, nombre d'ex aequo 0
temps moyen du robot A : 99.37074220000186 s
Sur 500000 courses, le robot A en a gagné 49.476 %
Sur 500000 courses, nombre d'ex aequo 0
temps moyen du robot A : 99.54323280000162 s
Sur 500000 courses, le robot A en a gagné 49.51 %
Sur 500000 courses, nombre d'ex aequo 0
temps moyen du robot A : 99.48928100000245 s
Sur 500000 courses, le robot A en a gagné 49.606 %
Sur 500000 courses, nombre d'ex aequo 0
temps moyen du robot A : 99.37046660000149 s
********
C'est maintenant quasi identiques avec les résultats de CZBM
Déterminer théoriquement le temps moyen de la course me paraît coton. Pour l'exemple jouet de la course de 4m, je peux gérer l'arbre. Pour celle de 100m avec des pas de 10m et 0,1m, pffui !!
Bonsoir,
je vous présente mes excuses pour ma trop longue absence de réaction.
Ce qui a entraîner mon premier message est la croyance fausse que E(1/X)=1/E(X) où X est une variable aléatoire ( dont le support est inclus dans *+ ici. )
Personnellement j'en retiens qu'il ne suffisait pas de comparer les espérances des distances parcourues en 1 seconde , ce que naïvement j'avais fait.
Salut GBZM
Verdurin, tout le monde peut se tromper par inattention, mais notre grand clown dislogique auto-déclaré spécialiste insiste :
<<
si X est une va iid et E() est la fonction "espérance" habituellement admise, alors E(1/X) ~ 1/E(X).
>>
Ne cherchez pas, il a inventé la locution "une variable iid"
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :