Inscription / Connexion Nouveau Sujet
Niveau exercices
Partager :

nombre d'etapes

Posté par
flight
13-05-22 à 18:09

Bonsoir

je vous propose l'exercice suivant  : ( sympa )

je dispose de deux sacs de billes, l'un contenant 8 billes blanches noté U et l'autre contenant  12 billes blanches et noté V , je choisis un sac au hasard et de facon equiprobable ,si le sac choisi et U je retire une bille de ce sac et la place dans le sac V , de la meme facon si le sac choisit est V je retire une bille et la place dans U .
Au bout de combien combien d'etapes puis je esperer voir le sac noté U completement vide ?

Posté par
verdurin
re : nombre d'etapes 13-05-22 à 20:18

Bonsoir,
que se passe t-il si le sac V est vide avant le sac U ?
Ce qui est un événement de probabilité non négligeable (1/4).

Posté par
flight
re : nombre d'etapes 13-05-22 à 22:55

Bonsoir Verdurin , merci pour cette precision , lorsque le sac V est vide le jeu s'arrete .

Posté par
ty59847
re : nombre d'etapes 14-05-22 à 00:01

Pour botter en touche, tu aurais pu dire que le sac V contenait 100 billes, et comme ça, l'objection de Verdurin n'avait plus vraiment lieu d'être.

Dès qu'un sac est vide, le jeu s'arrête.
Déjà un début de résultat : si on a réussi à vider un des 2 sacs en moins de 8 tirages, il y a tricherie.

Posté par
flight
re : nombre d'etapes 14-05-22 à 09:28

salut ty59847 , je ne cherchais pas à eviter la question de Verdurin qui est utile  si le sac V est vide avant le sac U , le jeu s'arrete et on recommence avec 8 billes dans le sac U et 12 dans le sac V .. probleme paraissant simple mais bien compliqué en fait ..

Posté par
Leile
re : nombre d'etapes 14-05-22 à 10:59

bonjour à tous,

une simulation donne un nombre d'étapes moyen proche de 51 pour vider U, avec environ 1/3 de cas ou c'est V qui se vide en premier...

Posté par
ty59847
re : nombre d'etapes 14-05-22 à 11:47

Considérons que la partie ne s'arrête pas quand on a vidé un des 2 sacs, on ne fait que compter le nombre de fois où on a choisi U.
Et je m'intéresse uniquement au cas 'a-t-on eu à un moment du process  un écart de 8 en faveur de U ?'.

Au bout de 50 étapes par exemple, la loi binomiale nous dit les probabilités d'avoir tiré k fois U, avec k entre 0 et 51.
Classique.
Si on a tiré 50,49, 48 ... 30 fois U , alors nb(U)-nb(V) > 8, on sait  que U est vide. Notons N0 la probabilité correspondante. Classique, on sait calculer.
Si on a tiré 29 fois U, alors nb(U)-nb(V)=8. Pareil, la partie est finie.
Notons N1 la probabilité correspondante. Pareil, on sait calculer.

Si on a tiré moins de 29 fois U, peut-être que la partie est finie, mais peut-être pas.
Par exemple, si on a tiré 8 fois U, et 42 fois V, il y a plein de chemins qui conduisent à ce total, mais il y a un cas où la partie est finie, si les 8 tirages de U étaient les 8 premiers tirages.  Ce cas est le 'symétrique' du cas où on tire 50 fois de suite U.
Pareil parmi les cas où on finit avec 9 U et 41 V, on a différents cas où la parie est finie depuis un certain temps, combien ?  pareil, par symétrie, c'est le même comptage que pour ceux qui finissent avec 49 U et 1 V

Parmi tous les cas où au final, on a moins de 29 fois U, il y en a un certain nombre où on est passé à un moment par 'la partie est finie', et ce nombre, c'est N0.

Posté par
flight
re : nombre d'etapes 14-05-22 à 15:28

Merci à tous d'avoir participé à ce topic , le sujet est consideré comme "ouvert" bien sur , il se peut surement que l'enoncé que j'ai fourni ne sois pas suffisament renseigné , j'ai aussi fais une simulation qui me retourne les memes resultats que Leile environ 51 essais ,

Posté par
verdurin
re : nombre d'etapes 15-05-22 à 21:12

Bonsoir,
je voudrais d'abord corriger une erreur de ma part :
la probabilité pour que le sac V soit vide avant le sac U est 2/5=8/(12+8). Ce qui se démontre « assez facilement ».
Je ne sais plus pourquoi j'ai écrit 1/4.

À part ça je ne trouve pas du tout 51 coups pour vider le sac U, mais plutôt 85.
Et 112 coups en moyenne quand le sac V est vide avant le sac U.

J'aimerais voir le code de vos simulations.

Je donne celui de la mienne, il est assez mal écrit et peut-être faux.

# ruine du joueur
# deux joueurs U et V ont un capital respectif de 8 et 12,
# à chaque partie l'un donne 1 à l'autre avec une proba 1/2.

from random import randrange

U,V=8,12

def ruine():
    ncoup=0
    u,v=U,V
    while (u>0) and (v>0) :
        if randrange(2):
            u,v = u+1, v-1
        else :
            u,v=u-1, v+1
        ncoup+=1
    return [u>0,ncoup]

def echantillon(taille) :
    totalU=0
    totalV=0
    gainU =0
    for i in range(taille):
        a=ruine()
        if a[0] :
            gainU+=1
            totalV+=a[1]
        else :
            totalU+=a[1]
    print("proba de gain pour U ", gainU/taille)
    print(" U gagne en ", totalV/gainU , "coups en moyenne")
    print(" V gagne en ", totalU/(taille-gainU) , "coups en moyenne")
    return [gainU,totalV,totalU]

Posté par
flight
re : nombre d'etapes 16-05-22 à 12:11

salut Verdurin ( voici en vba) :

Citation :
Sub deux_urnes()
Dim u, v, z, aa, bb As Double
Randomize

z = 0
et = 0
aa = 0
bb = 0
Do

et = et + 1
u = 8
v = 12
e = 0

Do
e = e + 1
p = Rnd
  If p >= 0 And p < 1 / 2 Then 'tirage dans u1
  If u > 0 Then
   u = u - 1
  End If
   v = v + 1
   Else 'tirage dans u2
   u = u + 1
   If v > 0 Then
   v = v - 1
   End If
  End If
Loop Until u = 0 Or v = 0

If u = 0 Then
aa = aa + 1
z = z + e
End If
If v = 0 Then
bb = bb + 1
End If
Loop Until et = 100000
MsgBox z / et ' retourne environ 51 essais pour avoir U1 vide
MsgBox "proportion des cas ou U est vide :" & aa / et & Chr(10) & "proportion des cas ou V est vide :" & bb / et  ' retourne :0.6  et 0.4
End Sub

Posté par
jandri Correcteur
re : nombre d'etapes 16-05-22 à 14:17

Bonjour,

je découvre cet exercice qui est classique (problème de la ruine du joueur ou marche aléatoire sur Z).

Comme souvent ce problème de flight est mal posé.
Si on arrête le jeu quand le sac V est vide (message de flight le 13-05-22 à 22:55) l'espérance du nombre d'étapes pour vider U est infinie car le sac V peut être vide avant le sac U.

Il y a deux façons d'avoir une espérance finie.

Premier cas : le jeu s'arrête dès qu'un sac est vide (le U ou le V). L'espérance du nombre d'étapes est égale à 96.

Deuxième cas : le jeu s'arrête quand le sac U est vide et si le sac V se vide avant on tire obligatoirement une bille du sac U pour la mettre dans V. L'espérance du nombre d'étapes est alors égale à 256. C'est le problème "Déplacements et proba" posé par flight le 16-04-22 à 15:43.

Posté par
verdurin
re : nombre d'etapes 16-05-22 à 14:25

Je comprends d'où vient la différence entre nos résultats.
Pour avoir le nombre moyen de coups pour vider le sac U il faut calculer z/aa et non z/et.

Comme aa3/5*et on trouve bien le même résultat car 51*5/3=85.

Posté par
Leile
re : nombre d'etapes 16-05-22 à 15:56

j'arrive un peu tard pour donner mon algo , le voici quand même :
(quand V se vide en premier, on arrête ce jeu et on en recommence un autre).

def jeu(m):
    s=0
    k=0
    for i in range (m):
        
        U=8
        V=12
        n=0
        H=1
        /*    H  est le flag de stop   */
        while (H!=0 ):
            choix=randint(0, 1)
            n=n+1
            if choix==0:
                U=U+1
                V=V-1
            else:
                U=U-1
                V=V+1
            
            if (U==0 or V==0):
                H=0
        if U==0:
            s=s+n
        else:
            k=k+1
    print(" V vides : ", k)
    print(" proportion : ", k/m)
    return(s/m)

from random import *
a=jeu(20000)
print(a)

affiche  
V vides :  8167
proportion :  0.40835
50.9029

Posté par
verdurin
re : nombre d'etapes 16-05-22 à 20:20

Salut,
je vois le problème comme suit :
On arrête quand un sac est vide.
jandri s'intéresse au nombre moyen de coups pour que ceci se produise.
J'ai interprété la question comme « si le sac U est vide, combien a t-on joué de coups en moyenne ».

Je crois que c'est la question de flight.

En tout état de cause flight et Leile font la même erreur.
Si on ne s'intéresse qu'aux cas où on termine par U vide, le nombre moyen de coups s'obtient en divisant le nombre total de coups arrivant à U vide par le nombre de parties arrivant à U vide.

Posté par
flight
re : nombre d'etapes 17-05-22 à 20:07

Bonjour , une simulation du 2 ieme cas proposé par Jandri ( pour une esperance finie ..)

Citation :
Sub deux_urnes_bis()
Dim u, v  As Double
Randomize

et = 0
q = 0
Do

et = et + 1
u = 8
v = 12
e = 0

Do
e = e + 1
p = Rnd
If p >= 0 And p < 1 / 2 Then 'tirage dans U
     If u > 0 Then
        u = u - 1
        v = v + 1
     End If
  
       Else 'tirage dans V
  
     If v > 0 Then
       v = v - 1
       u = u + 1
         Else
       u = u - 1
       v = v + 1
      
    End If
End If
Loop Until u = 0

If u = 0 Then
q = q + e
End If

Loop Until et = 100000

MsgBox q / et ' retourne environ 256 essais pour avoir U1 vide

End Sub

Posté par
flight
re : nombre d'etapes 17-05-22 à 20:13

la ligne  "if u = 0 " et "end if" n'est pas utile et est en trop dans le code vu la condition qui précede .

simulation du 1 ier cas proposé par Jandri :

Sub deux_urnes_bis()
Dim u, v, z, aa, bb As Double
Randomize

et = 0
q = 0
Do

et = et + 1
u = 8
v = 12
e = 0

Do
e = e + 1
p = Rnd
If p >= 0 And p < 1 / 2 Then 'tirage dans U
     If u > 0 Then
        u = u - 1
        v = v + 1
     End If
  
       Else 'tirage dans V
  
     If v > 0 Then
       v = v - 1
       u = u + 1
    End If
End If
Loop Until u = 0 Or v = 0

q = q + e


Loop Until et = 100000

MsgBox q / et ' retourne environ 96 essais pour avoir U1 vide

End Sub

Posté par
Leile
re : nombre d'etapes 17-05-22 à 20:15

tu as raison, verdurin, j'ai donc corrigé mon algo
avec   return (s / (m-k) )
ce qui donne un nombre d'étapes proche de 85.
Bonne soirée à tous



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !