Question 1:

Principe : Un tableau de booléen indique si la carte i (indice du tableau) a été trouvé. Lorsque tout le tableau est rempli de TRUE, le carnet est complet et l’on connait le nombre de cartes qui ont dues être tirées.

t_en_fonction_M <-function(n){


M=c();
t=0;
for(k in c(1:n)){
  M[k]=FALSE;
}
while(sum(M)!=n){
 t=t+1; 
 P=runif(1);
 i=0;
 while(i<=n &(P>((i+1)/n))){
   i=i+1;
   k
 }
 M[i+1]=TRUE;
}
t;
}

Question 2

Fonction d’affichage graphique donnant l’histogramme et les différentes valeurs de T

graphical_check <-function(x){
  
  par(mfrow=c(1,2))
  hist(x)
  plot(x[1:length(x)-1],x[2:length(x)])
}

Fonction donnant un affichage graphique et la moyenne du nombre de carte pour n le nombre d’échantillon et m le nombre de cartes distinctes

nb_carte_moy<-function(n,m){
x=c()
for(i in c(1:n)){
  x[i]=t_en_fonction_M(m)
}
graphical_check(x)
res=sum(x)/n
res
}

Fonction qui est la même que la précédente sans l’appel à graphical check

nb_carte_moy_sg<-function(n,m){
x=c()
for(i in c(1:n)){
  x[i]=t_en_fonction_M(m)
}
res=sum(x)/n
res
}

On fait une expérience sur 100 échantillons et un nombre de cartes M égale à 10.

res=nb_carte_moy(100,10)

plot of chunk unnamed-chunk-5

res
## [1] 30.09

On augmente le nombre d’échantillons Nb= 1000

nb_carte_moy(1000,10)

plot of chunk unnamed-chunk-6

## [1] 29.37

On en conclu que la valeur moyenne est autour de 30 pour M=10

M=30

nb_carte_moy(100,30)

plot of chunk unnamed-chunk-7

## [1] 115
nb_carte_moy(1000,30)

plot of chunk unnamed-chunk-8

## [1] 121

L’écart entre 390 pour 100 échantillons et 120 pour 1000 nous incite fortement à renouveler le test avec plus d’échantillons.

nb_carte_moy(2000,30)

plot of chunk unnamed-chunk-9

## [1] 120.2

On en conclu d’après cette exprience que la moyenne de cartes necessaires converge vers 120 pour M=30

M=50

nb_carte_moy(100,50)

plot of chunk unnamed-chunk-10

## [1] 221.7

Résultat non significatif car le nombre T peut être grand. Ainsi il suffit de quelques grandes valeurs sur 100 échantillons pour que la moyenne soit biaisée.

nb_carte_moy(1000,50)

plot of chunk unnamed-chunk-11

## [1] 224.9

On réitère l’expérience une 3ème fois

nb_carte_moy(2000,50)

plot of chunk unnamed-chunk-12

## [1] 224.3

L’écart étant encore grand entre 1000 et 2000 échantillons on recommence avec 3000.

nb_carte_moy(3000,50)