• Aucun résultat trouvé

TP n° 4 Corrigé

N/A
N/A
Protected

Academic year: 2022

Partager "TP n° 4 Corrigé"

Copied!
6
0
0

Texte intégral

(1)

Dans la boîte il y a n boules blanches et p boules noires.

On tire une boule :

– si elle est blanche on arrête.

– si elle est noire on remet une boule blanche dans la boîte, et on retire une boule à nouveau.

Schématisons les tirages posssibles successifs par un arbre :

Arrêt après le tirage n° k, il faut distinguer :

* si k = 1 on a tiré une boule blanche du 1

er

coup, sans tirer de boulr noire avant

* si k

2, on a tiré k – 1 fois une boule noire donc il a été retiré de la boîte k – 1 boules noires, que l'on a remplacé par k – 1 boules blanches avant de tirer une boule blanche.

Les rapports indiquent les probabilités du tirage d'une boule blanche (Bla) et du tirage d'une boule noire (No) à chaque tirage d'une boule.

Sont indiquées à chaque tirage d'une boule le nombre de boules blanches et le nombre de boules noires présentes dans la boîte.

n Bla, p Noi

Bla Noi

n

n + p p

n +p

Arrêt X=1

Bla Noi

n + 1

n + p p−1

n + p

Arrêt X=2

n+1, p 1

n+2, p 2

Bla Noi

n + 2

n + p p−2

n + p

Arrêt X=3

n+k 1, p k+1

Bla n + k − 1

n + p

Arrêt X=k

n+k 2, p k+2

p−k+2

Noi n+p

(2)

Remarque :

le nombre total de boules n+p dans la boîte ne change pas, chaque noire tirée étant remplacée par une blanche.

Si k

=

1 la probabilité est : Pr(X = 1) = n

n + p (on n'a tiré aucune boule noire avant)

Si k

2, (on a déjà tiré k – 1 boules noires). Avant le k – 1

ième

tirage (de la dernière boule noire tirée avant la blanche) il y avait n+k 2 boules blanches et p k+2 boules noires dans la boîte (on avait déjà tiré k – 2 boules noires), et la k – 1

ième

boule noire avait une probabilité p−k+2

n + p d'être tirée.

Si k

2, les évènements successifs "tirer une boule noire" se produisant les uns après les autres et l'évènement "tirer une boule blanche" se produisant encore après, les probabilités se multiplient :

Pr(X = k) = p

n+p

×

p−1 n+p

×

p−2

n+p

× ... ×

p−k +2 n+ p

×

n+ k −1

n+p pour 2

k

p+1

(au mieux on arrête au 1

er

tirage, ayant tiré une boule blanche et au pire tire une boule noire aux p premier tirage et on tire forcémént une boule blanche car il n'y a plus de boule noire – les boules noires tirées ayant été remplacées pae des blanches – )

Pr(X = k) est le produit des p − j

n+ p (pour j=0 à k – 2), multiplié par n + k − 1 n+p .

D'où le remplissage du tableau Prob des probabilités et l'initialisation des fréquences :

Prob[1]=n/(n+p) Freq[1] = 0 somme=n/(n+p) de k=2 à p+1 produit=1 si(k1)

de j=0 à k

2

produit=produit*(p – j)/(n+p) Prob[k]=produit*(n+k – 1)/(n+p) Freq[k] = 0;

somme=somme + Prob[k]

Expériences :

Au passage on calcule la

somme des probabilités pour

s'assurer quelle est égale à 1, il

suffit de l'afficher ensuite.

(3)

de j=1 à NbExp

n1=(nbre de boules Blanches)=n n2=(nbre de boules Noireses)=p NbTirages=0

Arret=faux

tant que (pas Arret)

NbTirages augmente de 1

alea=entier aléatoire de 1 à n+p inclus si (alea

<

=n1)

Arret=vrai sinon

n1 augmente de 1 n2

diminue de 1

Freq[NbTirage]++;

de k=1 à p+1

Freq[k] = Freq[k] / NbExp;

On a alors les fréquences relatives dans le tableau Freq.

Il suffit alors de mettre en place les affichages prévus et les calculs d'espérances et variances théoriques (avec le tableau Prob des probabilités) et observées (avec le tableau Freq des fréquences relatives) avec leurs affichages respectifs.

Pour chaque expérience, on a au départ n1=n boules blanches et n2=p boules noires mais chaque noire tirée (alea > n1) sera remplacée par une blanche (n1++ et n2 –

–), tant qu'on ne tire pas une blanche, et quand on tire une blanche (alea <= n1) on s'arrête. On compte le nombre de tirages effectués (NbTirage).

alea est un entier aléatoire de 1 à n+p

inclus car il y a toujours n+p boules

dans la boîte à chaque tirage de boule.

(4)

#pragma hdrstop

#include <iostream>

#include <iomanip>

#include <math.h>

#include <time.h>

using namespace std;

// Variables globales

double Prob[100],Freq[100];

int n,p;

unsigned int NbExp;

double Somme,EspTh,VarTh EspObs,VarObs;

//---Declaration des fonctions void Esperances();

void Variances();

void Entrees();

void InitProbasFreq();

void Simulation();

void Affichage();

//---

#pragma argsused

int main(int argc, char* argv[]);

{

srand(time(NULL));

cout<<"Dans une boite il y a n boules blanches et p boules noires";

cout<<endl;

cout<<"On tire une boule');

cout<<" si elle est blanche on arrete');

cout<<endl;

cout<<" si elle est noire on remet une boule blanche dans la boite');

cout<<endl;

cout<<" et on retire une boule a nouveau');

cout<<endl;

cout<<"La variable aleatoire X est le nombre de tirages necessaires');

cout<<endl; cout<<"pour sortir une boule blanche');

cout<<endl;

Entrees();

InitProbasFreq();

Simulation();

Affichage();

cin.sync();

cin.get();

return 0;

}//--- void Esperances();

{

EspTh=0;EspObs=0;

for (int k=1;k<=p+1;k++) {

EspTh=EspTh+k*Prob[k];

EspObs=EspObs+k*Freq[k];

} }

(5)

//--- void Variances();

{

VarTh=0;VarObs=0;

for (int k=1;k<=p+1;k++) {

VarTh=VarTh+k*k*Prob[k]; // on calcule l'espérance du carré de X VarObs=VarObs+k*k*Freq[k]; // --- idem --- }

VarTh=VarTh-EspTh*EspTh; // on applique le théorème de KOENIG VarObs=VarObs-EspObs*EspObs; //--- idem --- }

//--- void Entrees();

{

cout<<"Entrer n : ";

cin>>n;

cout"Entrer p : ");

cin>>p;

cout<<"Pour la simulation de E expériences (E grand), entrer E : ";

cin>>NbExp);

}

//--- void InitProbasFreq();

{

double Prod;

for (int k=1;k<=p+1;k++) {

Prod=1;

if (k>1) then

{ for int i=0 to k-2 do

Prod=Prod*(b-i)/(a+b); } Pr[k]=Prod*(a+k-1)/(a+b);

F[k]=0;

Somme+=Pr[k]

} }

//--- void Simulation();

{

int BoulesTirees,no;

bool arret;

int no,nbBlanches;

for (unsigned int j=1;j<=NbExp;j++) {

BoulesTirees=0;

arret=false;

while(!arret) {

no=rand()%(a+b)+1;

BoulesTirees++;

if (no<=nbBlanches) arret=true

(6)

else {

nbBlanches++; // inutile de décréménter le nombre de boules } // noires restant car on ne s'en sert pas, le } // nombre de boules dans la boite restant à n+p F[BoulesTirees]++;

}

for (int k=1;k<=p+1;k++)

F[k]=F[k]/NbExp; // Calcul des fréquences relatives

}//--- void Affichage();

{

cout<<<setw(7)<"X : ";

for (int k=1;k<=p+1;k++) { cout<<setw(7)<<k;

cout<<endl;

Som=0;

cout<<" Prob : ";

for (int k=1;k<=p+1;k++) {

cout<<setw(7)setprecision(4)<<Pr[k];

}

cout<<endl;

cout<<" Freq : ";

for (int k=1;k<=p+1;k++)

cout<<setw(7)setprecision(4)<<F[k];

cout<<endl;

cout<<"Somme des probas : "<<setw(12)setprecision(7)<<Somme;

Esperances();

Variances();

cout<<"Esp Theorique : "<<setw(12)setprecision(7)<<EspTh;

cout<<"Esp Observee : "<<setw(12)setprecision(7)<<EspObs;

cout<<"Variance Theorique : "<<setw(12)setprecision(7)<<VarTh;

cout<<"Variance Observee : "<<setw(12)setprecision(7)<<VarObs;

}//---

Références

Documents relatifs

Un des joueurs choisit un nombre entier entre 1 et 100, appelé le nombre caché, et le second joueur doit deviner

Intéressons-nous maintenant au nombre x de façons de répartir les boules dans les n boîtes de telle sorte que chaque boîte contienne une boule et une seule!. 2

[r]

Observer la victime à la recherche Assurer une immobilisation de fortune Pansement pour les plaies simples Emballage pour les plaies graves Demander le statut vaccinal

L’enjeu de cette prospective est, dans des contextes variés (urbain, périurbain, rural), de mettre en mouvement les acteurs des territoires pour partager des connaissances sur les

[r]

Un nombre entier n est dit « puissant » si pour chaque facteur premier p de cet entier, p² est aussi un diviseur de n.. Un nombre d’Achille (1) est un entier puissant sans être

Un nombre est puissant si « pour chaque facteur premier p de cet entier, p² est aussi un diviseur de n », ce qui implique que chacune des exposants de sa décomposition soit