Binôme : Malek MAMMAR & Alexandre LE JEAN
Question 1
Ecrivons un simulateur générant T en fonction de M
set.seed(10)
simulateur <- function (M = 300) {
album = array(0, c(M));
nb_Case_Non_Etiquetés = M;
Tresultat = 0;
while (nb_Case_Non_Etiquetés > 0) {
x = floor(runif(1,1,M+1));
if (album[x] == 0) {
album[x] = 1;
nb_Case_Non_Etiquetés = nb_Case_Non_Etiquetés - 1;
}
Tresultat = Tresultat + 1;
}
Tresultat
}
simulateur(M=10);
## [1] 38
Question 2
Etudions la valeur moyenne de T en fonction de M
set.seed(10)
df = data.frame(varM = c(), echant=c())
m = 0
for(k in 1:10){
m = m + 20
echantillon = 0;
for(i in 1:100){
echantillon = echantillon + simulateur(M=m)
}
echantillon = echantillon / 100
df = rbind(df, data.frame(varM = m, echant = echantillon))
}
barplot(df$echant, names.arg=df$varM, xlab="Albums de taille M", ylab ="Nombre total de vignettes achetées T")
Conclusion :
Sur une dizaine de valeurs de M entre 10 et 200. On peut remarquer que le nombre de vignette T achetées evolue linéairement par rapport a la taille M de l’album.
Question 3
Les hypothèses satistiques sur la suite de variables aléatoires que l’énoncé suggère sont:
l’indépendance : la séquence d’appels à un générateur aléatoire modélisé par la suite
l’uniformité : en moyenne les valeurs des variables aléatoires sont reparties (homogène) sur
Ainsi il faut que les variables aléatoires soient indépendantes et identiquement distribuée.
Question 4
Le tirage d’une carte est une loi de Bernoulli de paramètre
D’où
Donc
Les variables
Calculons
Question 5
Pour Vérifier graphiquement les résultats obtenus, nous remarquons que le graphe est linéaire ce qui par calcule coincide par le fait que
Question 6
m = 300
res = 0
for(i in 1:m){
res = res + (m/(m-i+1))
}
res = res - (res %% 10) + 10 #On arrondie a la dizaine supérieure
res = (res / 10) * 2 #On divise par le nombre de cartes par paquet, multiplié par le prix
res
## [1] 378
Conclusion :
Notre petit cousin doit payer 378 ??? en moyenne si l’album comporte 300 places.
Extension au cas non uniforme
Question 7
Adaptons notre simulateur afin d’étudier les deux cas suivants :
set.seed(10)
alpha <- function(M=300) {
res = 0
for(k in 1:M){
res = res + 1/k
}
res
}
pi <- function(i = 1, alpha = 1) {
1/(alpha*i)
}
draw <- function (M=300, alpha){
r = runif(1)
acc2 = pi(1, alpha)
acc1 = 0
i = 1
while (!(r >= acc1 && r<acc2)) {
acc1 = acc2
i = i + 1
acc2 = pi(i, alpha) + acc1
}
i
}
simulateur2 <- function (M = 300) {
album = array(0, c(M));
nb_Case_Non_Etiquetés = M;
Tresultat = 0;
alphas = alpha(M);
while (nb_Case_Non_Etiquetés > 0) {
x = draw(M, alphas);
if (album[x] == 0) {
album[x] = 1;
nb_Case_Non_Etiquetés = nb_Case_Non_Etiquetés - 1;
}
Tresultat = Tresultat + 1;
}
Tresultat
}
Représentation graphique :
set.seed(10)
df = data.frame(varM = c(), echant=c())
m = 0
for(k in 1:10){
m = m + 20
echantillon = 0;
for(i in 1:25){
echantillon = echantillon + simulateur2(M=m)
}
echantillon = echantillon / 25 #moyenne des echantillons
df = rbind(df, data.frame(varM = m, echant = echantillon))
}
barplot(df$echant, names.arg=df$varM, xlab="Albums de taille M", ylab ="Nombre total de vignettes achetées T")
set.seed(10)
alpha2 <- function(M=300) {
res = 0
for(k in 1:M){
res = res + 1/(k*k)
}
res
}
pi2 <- function(i = 1, alpha = 1) {
1/(alpha*i*i)
}
draw2 <- function (M=300, alpha){
r = runif(1)
acc2 = pi2(1, alpha)
acc1 = 0
i = 1
while (!(r >= acc1 && r<acc2)) {
acc1 = acc2
i = i + 1
acc2 = pi2(i, alpha) + acc1
}
i
}
simulateur3 <- function (M = 300) {
album = array(0, c(M));
nb_Case_Non_Etiquetés = M;
Tresultat = 0;
alphas = alpha2(M);
while (nb_Case_Non_Etiquetés > 0) {
x = draw2(M, alphas);
if (album[x] == 0) {
album[x] = 1;
nb_Case_Non_Etiquetés = nb_Case_Non_Etiquetés - 1;
}
Tresultat = Tresultat + 1;
}
Tresultat
}
Représentation graphique :
set.seed(10)
df = data.frame(varM = c(), echant=c())
m = 0
for(k in 1:10){
m = m + 20
echantillon = 0;
for(i in 1:10){
echantillon = echantillon + simulateur3(M=m)
}
echantillon = echantillon / 10 #moyenne des echantillons
df = rbind(df, data.frame(varM = m, echant = echantillon))
}
barplot(df$echant, names.arg=df$varM, xlab="Albums de taille M", ylab ="Nombre total de vignettes achetées T")
Conclusion :
On peut remarquer que la valeur T augmente de façon exponentielle par rapport à la valeur de M.
Question 8
Vu les résultats précédents, selon nous, la valeur T augmentera de manière beaucoup beaucoup plus rapide puisque