PROBABILITES ET SIMULATIONS: Vignettes panini

Question 1

Simulateur R générant le nombre de tirage T necassaire pour tirer toutes les vignettes d’un ensemble de cardinalité M>0.

tirage_vi <- function(M){
  T<-0
  tab<-rep(0,M)
  while(0%in%tab){
    tab[sample.int(300,1,replace=TRUE)]<-1
    T<-T+1
  }
  return(T)
}
print(tirage_vi(300))
## [1] 1646

Question 2

On calcule la moyenne de T de 500 experiences indépendantes sur plusieurs ensembles.

M<-c(10,15,25,30,40,50,75,100,125,150,175,200,250,300)
nbrep<-500
moy_T<-rep(0,length(M))
for(i in 1:length(M)){
  stop<-nbrep             #nb répétition de l'experience
  tab_T<-rep(0,stop) 
  while (stop > 0){
    tab_T[stop]<-tirage_vi(M[i])
    stop<-stop-1
  }
  moy_T[i]<-mean(tab_T)
}
plot(M,moy_T,xlab ='nb vignettes collectionnées',ylab='nb vignettes achetées')

plot of chunk unnamed-chunk-2

La moyenne de tirages necessaires ne semble pas évoluer linéairement par rapport au nombre de vignettes. Confirmons cette intuition avec une moyenne corrigée.

plot(M,moy_T/M,col=1,xlab ='nb vignettes collectionnées', ylab='moyenne corrigée en M')

plot of chunk unnamed-chunk-3

sur le graphe de moyenne corrigée on voit clairement la non linéarité.

MODELISATION

Question 3

L’énoncé suggère que le tirage des vignettes (Xn) suit une loi uniforme et donc que les tirages sont indépendants.

Question 4

le calcul de la probabilité de devoir acheter k vignettes pour en avoir une nouvelle, équivaut à tirer k-1 fois une vignette déja possédée, puis tirer une vignette nouvelle.

soit p la probabilité de tirer une vignette nouvelle ici on sait qu’on possède i-1 vignettes parmis les M totales d’ou p = M -(i-1) / M ; alors \[ \mathbb{P}(Y_i = k) = (1-P)^{k-1} \times p\] Yi suit clairement une loi géométrique, et chaque tirage est indépendant car \(Y_i\) n’est pas exprimé en fonction des Y précédents. \[\mathbb{E}(Y_i) = {1 \over p}\] \[\mathbb{V}(Y_i) = \frac{1-p}{p^2}\] T est obtenu en calculant la somme des k obtenus pour chaque \(Y_i\)

Donc: \[ \begin{aligned} \mathbb{E}(T) & = \mathbb{E}(\sum_{i=1}^M y_i) = \sum_{i=1}^M \mathbb{E}(y_i)\\ & = \sum_{i=1}^M \frac{M}{M-i+1}\\ & = M \times \sum_{i=1}^M {1 \over i}\\ & = M \times Ln(M) \text{|} M \to +\infty \end{aligned} \]

Et:

\[\begin{aligned} \mathbb{V}(T) & = \sum_{i=1}^M \mathbb{V}(Y_i)\\ & = \sum_{i=1}^M {M(i-1) \over (M-i+1)^2}\\ & = M \times \sum_{i=1}^M {1 \over i^2} \end{aligned}\]

SYNTHESE

Question 5

Question 6

La loi de tirage des vignettes etant uniforme et les tirages indépendants. Le cout moyen pour avoir l’ensemble des 300 vignettes plus le cahier de collage est donné par:

\[coût = 4 + 2 \times \left({\mathbb{E}(T) \over 10}\right)\]

Considérant que 300 est grand pour ln on peut dire que le coût moyen peut alors s’écrire:

\[coût = 4 + 2 \times M \times {ln(M) \over 10} = 4 + 60ln(300) = 346,22 € \]

EXTENSION AU CAS NON UNIFORME

Question 7

Génération des probabilités du premier cas

calcul_p_i <- function(M){
  p_i<-rep(0,M)
  alpha<-0
  for (k in 1:M){
    alpha<-alpha+(1/k)
  }
  for (i in 1:M){
    p_i[i]<-1/(alpha*i)
  }
return(p_i)
}

Génération des probabilités du second cas

calcul_p_i2 <- function(M){
  p_i2 <- rep(0,M)
  alpha <- 0
  for (k in 1:M){
    alpha <- alpha+(1/(k*k))
  }
  for (i in 1:M){
    p_i2[i] <- 1/(alpha*i*i)
  }
return(p_i2)
}
M<-300
plot(calcul_p_i(M),main='densité probabilités', xlab='vignette i',ylab='p(i)',type='l',col='purple')
lines(calcul_p_i2(M),col=5)

plot of chunk unnamed-chunk-6

Créons maintenant la fonction de tirage aléatoire non uniforme

tirage_nu <- function (m,p){
  
  T<-0
  tab<-rep(0,m)
  while(0%in%tab){
    tirage<-runif(1)
    i<-1
    while(tirage >= 1-p[i] && i<=length(p)){
      i<-i+1      
    }
    tab[i]<-1
    T<-T+1
  }
    
  
  return(T)
}

En laissant tourner ce chunk on remarque qu’il faudrait un temps incroyablement long pour qu’il termine faisons une autre experience; un tirage de 1000 vignettes pour voir la repartition

repartition_nu <-function(k,m,p){
  nbTir <- k
  qte_vi<-rep(0,m)
  while(nbTir>0){
    tirage<-runif(1)
    i<-1
    while(tirage >= 1-p[i] && i<=length(p)){
      i<-i+1      
    }
    qte_vi[i]<-qte_vi[i]+1
    nbTir<-nbTir-1
  }
return(qte_vi)
}
M<-30
barplot(repartition_nu(1000,M,calcul_p_i(M)),main='tirages non uniforme de vignettes', xlab='vignette i',ylab='nombre vignettes tirées',col='purple')

plot of chunk unnamed-chunk-8

Grace à ce test nous pouvons remarquer que l’écrasante majorité des vignettes se trouve en début de tableau.

essayons avec la deuxième repartition de probabilité.

M<-30
barplot(repartition_nu(1000,M,calcul_p_i2(M)),main='tirages non uniforme de vignettes', xlab='vignette i',ylab='nombre vignettes tirées',col='purple')

plot of chunk unnamed-chunk-9

le cas est très similaire. mais les densités de probabilité étant plus faibles que dans le premier cas les tirages devront être encore plus nombreux…

Question 8

En prenant la probabilité décroissante en un terme exponentiel \(2^i\) on arrive très vite sur une asymptote en 0. Autant dire que les chances sont quasi nulles d’obtenir toutes les vignettes.Et donc un temps infini de simulation sur nos machines (i.e machine conçue par un humain; incapable de tirer \(2^{300}\) vignettes (pour info nb d’atomes dans l’univers \(2^{100}\))).