Les programmes R correspondants :
# ALGORITHME INITIALEMENT PROPOSÉ NE DÉNOMBRANT PAS LES "PAIRES SÈCHES"
# CONTRAIREMENT AU MODÈLE MATHÉMATIQUE DÉVELOPPÉ DANS L'ARTICLE DE BERNARD T.
# CET ALGORITHME COMPTE PAR EXEMPLE LA DERNIÈRE PAIRE D'UN BRELAN ("TRIPLET")...
DeuxPaires <- function(N = 10000){
urne <- 0:9 G <- 0
for(A in 1:N){
L1 <- sample(x = urne, size = 5, replace = TRUE) F <- 0
L2 <- sort(L1)
L2 <- c(L2, L2[5] + 1) L2 <- c(L2, L2[6] + 1) for(X in 1:5){
if(L2[X] == L2[X + 1] & L2[X + 1] != L2[X + 2]) {F <- F + 1}
}
if(F == 2) {G <- G + 1}
}
EstimProba <- G / N
cat("Une estimation de la probabilité cherchée est de", EstimProba, "\n\n") }
Hubert RAYMONDAUD 05/05/15
LEGTA Louis Giraud *
84200 CARPENTRAS page 1 sur 3 tempfile_10706.odt
# ESTIMATION DE LA PROBABILITÉ D'OBTENIR DEUX PAIRES SÈCHES DIFFÉRENTES
# CONFORMÉMENT AU MODÈLE MATHÉMATIQUE DÉVELOPPÉ DANS L'ARTICLE DE BERNARD T.
# EN TIRANT 5 ENTIERS ALÉATOIREMENT ET AVEC RÉPÉTITION ENTRE 0 ET 9
# Cet fonction utilise la fonction table(…) qui calcule le tableau des effectifs
# de la séries des chiffres simulée. On dénombre ensuite les tableaux dans
# lesquels figurent deux fois l'effectif 2.
# On y réinvestit la notion de tableau des effectifs. On peut facilement passer
# au dénombrement d'autres événements tels que les triplets, quadruplets … DeuxPairesHub <- function(nbsim = 10000){
urne <- 0:9 nb2Paires <- 0 for(i in 1:nbsim){
echant <- sample(x = urne, size = 5, replace = TRUE) TabloEff <- table(echant)
nbPSeche <- sum(TabloEff == 2)
if(nbPSeche == 2) {nb2Paires <- nb2Paires + 1}
} EstimProba2P <- nb2Paires / nbsim
cat("Une estimation de la probabilité cherchée est de", EstimProba2P, "\n\n")
}
# ALGORITHME Hub2 PLUS RAPIDE. N'UTILISE PAS table() mais construit directement
# le tableau des effectifs dans la table "tablo[]".
# Cet algorithme est transcriptible dans le langage des calculatrices, moyennant
# une petite adaptation : Il faut faire une boucle pour dénombrer les
# effectifs 2 dans le tableau.
DeuxPairesHub2 <- function(N = 10000){
urne <- 0:9 G <- 0
for(A in 1:N){
L1 <- sample(x = urne, size = 5, replace = TRUE) tablo <- rep(0, 10)
for(X in 1:5){
tablo[L1[X] + 1] <- tablo[L1[X] + 1] + 1 }
if(sum(tablo == 2) == 2) {G <- G + 1}
}
EstimProba2P <- G / N
cat("Une estimation de la probabilité cherchée est de", EstimProba2P, "\n\n")
}
Hubert RAYMONDAUD 05/05/15
LEGTA Louis Giraud *
84200 CARPENTRAS page 2 sur 3 tempfile_10706.odt
# ÉTUDE DE LA VARIABILITÉ DE F / N CALCULÉ AVEC L'ALGORITHME INITIAL (ERRONÉ)
# PAR BERNARD TOUMACHE
# ON FAIT 1000 RÉPÉTITIONS DE LA SIMULATION DE 500 RÉPÉTITIONS
# ON TRACE L'HISTOGRAMME DE LA SÉRIE DES 1000 FRÉQUENCES OBTENUES
# LIGNES DE COMMANDES FreqSim <- NULL for(M in 1:1000){
N <- 500 F <- 0
for(I in 1:N){
L1 <- sample(0:9, 5, replace = TRUE) L1 <- sort(L1)
L2 <- c(L1, L1[5] + 1, L1[5] + 2) G <- 0
for(n in 1:5){
if(L2[n] == L2[n + 1] & L2[n + 1] != L2[n + 2]) {G <- G + 1}
}
if(G == 2){F <- F + 1}
}
FreqSim <- c(FreqSim, F / N) }
hist(FreqSim, col = "grey80") ; grid(col = "grey20")
# ÉTUDE DE LA VARIABILITÉ DE F / N CALCULÉ AVEC L'ALGORITHME CORRIGÉ,
# PAR BERNARD TOUMACHE
# ON FAIT 1000 RÉPÉTITIONS DE LA SIMULATION DE 500 RÉPÉTITIONS
# ON TRACE L'HISTOGRAMME DE LA SÉRIE DES 1000 FRÉQUENCES OBTENUES
# LIGNES DE COMMANDES FreqSim <- NULL for(M in 1:1000){
N <- 500 F <- 0
for(I in 1:N){
L1 <- sample(0:9, 5, replace = TRUE) L1 <- sort(L1)
L3 <- c(L1[1] - 1, L1, L1[5] + 1, L1[5] + 2) G <- 0
for(n in 2:6){
if(L3[n] == L3[n + 1] & L3[n + 1] != L3[n + 2] & L3[n] != L3[n - 1]) { G <- G + 1
} }
if(G == 2){F <- F + 1}
}
FreqSim <- c(FreqSim, F / N) }
hist(FreqSim, col = "grey80") ; grid(col = "grey20")
Hubert RAYMONDAUD 05/05/15
LEGTA Louis Giraud *
84200 CARPENTRAS page 3 sur 3 tempfile_10706.odt