Vérification d'un algorithme de probabilité
Bonjour
Pour résoudre un petit problème de proba j'ai fait une simulation MATLAB.
A mon avis le code n'est pas optimale puisqu'il remplis toute la mémoire sur mon PC en simulant tout d'un coup, mais c'est pas grave parce que ma question concerne plutôt la partie proba: Est-ce que l'algo que j'ai fait simule bien ce que je veux simuler ?
Donc voila la question :
On a un sac remplit de 500 000 000 billes, tous de couleur bleu à l'exception de 320 000 qui sont vertes. En un an on en prend 27000 de manière aléatoire, une par une pour les peindre en rouge et en les remettants à chaque fois. Quelle est la probabilité d'avoir peint une même bille verte 2 fois en rouge ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
SIM = 1000000 ;
BT = 500000000 ;
V = 320000 ;
R = 27000 ;
W = V*(R/BT) ; % Nombre total de fois qu'on paint une bille en rouge par an.
X = SIM * W ; % Idem mais au bout de n simulations.
Y = SIM * V ; % Nombre total de billes vertes sur n simulations.
TIRAGES = 0:X ;
NB_0=V ; NB_1=0 ; NB_2=0 ; NB_9=0 ; % NB_0 = Le nombre de billes ayant été tirées 0 fois. Idem avec 1 et 2. NB_9 c'est le reste.
for i = 1 : 1 : X
TIRAGES(i) = round((Y-1)*rand(1)+1) ; % Les +1 et -1 servent juste à éviter les indices = à 0 qui font buger MATLAB.
end
TIRAGES = sort(TIRAGES) ;
for i = 1 : 1 : X
for k = 0 : 1 : X
if(TIRAGES(i+k) ~= TIRAGES(i+k+1))
NB_0 = NB_0 - 1 ;
break
else
i = i + 1 ;
end
end
if (k==0)
NB_1 = NB_1 + 1 ;
elseif (k==1)
NB_2 = NB_2 + 1 ;
else NB_9 = NB_9 + 1 ;
end
end
format long
NB_0 = NB_0/SIM
NB_1 = NB_1/SIM
NB_2 = NB_2/SIM
NB_9 = NB_9/SIM |