Code
# Chargement des bibliothèques
library(tidyverse)
library(kableExtra) # Pour la personnalisation des tableauxIntroductionKeno est un jeu de tirage . A chaque tirage, 20 numéros gagants sont tirés au hasard parmi une série de 80 numéros, numérotés de 1 à 80 . Bill doit sélectionner sur sa carte 15 numéros parmi les 80. Le joueur doit comparer, ensuite, le jeu gagnant avec ses 15 numéros sélectionnés. Les gains sont en fonctions des numéros sélectionnés qui sont gagnants.
# Chargement des bibliothèques
library(tidyverse)
library(kableExtra) # Pour la personnalisation des tableauxPossibilité de tiragePour trouver le nombre de combinaisons differentes de choisir 15 numéros parmi 80, nous utilisons la formule de combinaison :
\[ \binom{80}{15} \] Soit 6.63587e+15 de possibilité , pour Bill, de choisir 15 numéros parmi mes 80 possibles de la grille.
Numéros gagnant:Ici , nous calculerons la probabilité d’obtenir 10 numeros gagnants parmi les 20 possibles.
Combinaison de 10 numéros gagnants parmi 20 :\[ \binom{20}{10} \] soit 184 756 de possibilité d’avoir 10 numéros gagnants parmi les 20 possibles
Combinaison de 5 numéros parmis les 60 perdants :\[ \binom{60}{5} \] soit 5 461 512 de possibilité de tirer 5 numeros perdants parmis les 60 possibles
En conclusion, la probabilité que le joueur ait 10 numéros gagnants sur sa carte est donc :
\[ \frac{\binom{20}{10}\binom{60}{5}}{\binom{80}{15}} \]
soit: 1.520595e-04
Plus généralement, la probabilité que Bill obtienne r numéros gagnants est :
\[ \frac{\binom{20}{r}\binom{60}{15-r}}{\binom{80}{15}}, \:r=0,\cdots,15. \]
Présentons ,dans le tableau ci-dessous, les probabilités pour chaque valeur de r ainsi que les gains associés pour chacune de ces valeurs pour le jeu de Keno de Las Vegas (à partir de 1984):
# Définition des variables
rvalue<- 0:15
payoff<-c(rep(0,7),8,25,130,300,2600,8000,25000,32000,40000)
Prob <- dhyper(rvalue,20,60,15)
# Création de la table de données
table1<-data.frame(rvalue, Prob, payoff)
# Formater la colonne "Prob" en notation scientifique
table1$Prob <- format(table1$Prob, scientific = TRUE)
# Formater la colonne "payoff" avec un signe dollar
table1$payoff <- sprintf("$%s", format(table1$payoff, big.mark = " "))
#Renommage des colonnes:
colnames(table1) <- c("Value of r (number of winning numbers selected)", "Probability of r", "Payoff associated with the value of r")
# Créer une table avec un titre
kable(table1, align = "c", font_size = 12) %>%
kable_styling(full_width = FALSE, position = "center") %>%
add_header_above(c("TABLE I" = 3))%>%
row_spec(0, bold = TRUE )# Pour rendre la première ligne en gras| Value of r (number of winning numbers selected) | Probability of r | Payoff associated with the value of r |
|---|---|---|
| 0 | 8.016144e-03 | $ 0 |
| 1 | 5.227920e-02 | $ 0 |
| 2 | 1.479390e-01 | $ 0 |
| 3 | 2.404009e-01 | $ 0 |
| 4 | 2.502132e-01 | $ 0 |
| 5 | 1.761501e-01 | $ 0 |
| 6 | 8.634808e-02 | $ 0 |
| 7 | 2.988972e-02 | $ 8 |
| 8 | 7.331441e-03 | $ 25 |
| 9 | 1.267163e-03 | $ 130 |
| 10 | 1.520595e-04 | $ 300 |
| 11 | 1.234249e-05 | $ 2 600 |
| 12 | 6.496049e-07 | $ 8 000 |
| 13 | 2.067708e-08 | $25 000 |
| 14 | 3.504590e-10 | $32 000 |
| 15 | 2.336393e-12 | $40 000 |
Notez que les probabilités des résultats qui rapportent de l’argent sont très faibles. Les probabilités des résultats qui rapportent beaucoup d’argent sont quasiment impossibles. Dans un peu plus de 96% des cas (en additionnant les produits pour 0 < r < 6), Bill ne gagne rien.
tvalue<- 0:6
Prob_sum <- sum (dhyper(tvalue,20,60,15))
Prob_sum[1] 0.9613466
Distribution des échantillonsCe code génère un million d’échantillons à partir d’une distribution hypergéométrique, les stockes dans un DataFrame, et crée un histogramme pour visualiser la distribution des échantillons. Enfin, il affiche un tableau de fréquences pour examiner la distribution des valeurs tirées.
# Générer les échantillons hypergéométriques
echantillons_hypergeometrique <- rhyper(1000000,20,80-20, 15)
# Créer un data frame pour ggplot
df<-data.frame(x=echantillons_hypergeometrique)
# Créer l'histogramme
ggplot(df,aes(x=x))+
geom_histogram(binwidth = 1 , fill = "skyblue", color= "black") +
labs(title = "Histogramme de la loi hypergéométrique", x = "Nombre de numéros gagnants", y = "Nombre d'échantillons")+
scale_x_continuous(breaks = seq(0, 15, by = 1))# Calculer les fréquences et les formater
freq_table <- table(echantillons_hypergeometrique)
df_freq <- data.frame(
"Nombre de numéros gagnants" = names(freq_table),
"Nombre d'échantillons" = format(as.numeric(freq_table), big.mark = " ")
)
# Créer et afficher le tableau avec kable
kable(df_freq) %>%
kable_styling(full_width = TRUE, position = "center", font_size = 12) %>%
scroll_box(width = "100%", height = "200px")| Nombre.de.numéros.gagnants | Nombre.d.échantillons |
|---|---|
| 0 | 7 801 |
| 1 | 52 137 |
| 2 | 148 127 |
| 3 | 240 376 |
| 4 | 250 544 |
| 5 | 176 267 |
| 6 | 86 269 |
| 7 | 29 531 |
| 8 | 7 561 |
| 9 | 1 220 |
| 10 | 154 |
| 11 | 12 |
| 12 | 1 |
Gains espérés de BillPour calculer cette valeur attendue, multipliez chaque gain par sa probabilité correspondante, puis additionnez les produits.
Le Tableau II rapporte les produits non nuls résultant pour chaque valeur de r.
rvalue <- 7:15
product <- dhyper(rvalue, 20, 60, 15) * c(8, 25, 130, 300, 2600, 8000, 25000, 32000, 40000)
table2 <- data.frame(r = rvalue, Product = sprintf("$%.4e", product))
colnames(table2) <- c("r", "Product (Col 2 x Col. 3 of Table I)")
# Utiliser kable avec kableExtra pour appliquer des styles
kable(table2, align = "c") %>%
kable_styling(full_width = FALSE) %>%
add_header_above(c("Table II: Results of Product Calculation" = 2))%>%
row_spec(0, bold = FALSE) # Pour rendre la première ligne en gras| r | Product (Col 2 x Col. 3 of Table I) |
|---|---|
| 7 | $2.3912e-01 |
| 8 | $1.8329e-01 |
| 9 | $1.6473e-01 |
| 10 | $4.5618e-02 |
| 11 | $3.2090e-02 |
| 12 | $5.1968e-03 |
| 13 | $5.1693e-04 |
| 14 | $1.1215e-05 |
| 15 | $9.3456e-08 |
L’espérance est alors d’environ 0.67$ Puisque Bill a payé 1,00 $ pour son ticket, il devrait s’attendre à perdre de l’argent à long terme en jouant au Keno. Cela ne devrait pas le surprendre, car le casino s’attend évidemment à réaliser un profit.
Il est intéressant d’observer les contributions à l’espérance totale faites par les produits du Tableau II. Pour de petites valeurs de r, ces contributions sont relativement importantes. À mesure que r approche et atteint 15, les produits ne contribuent presque pas à la somme. Le prix maximum de 40 000 $ (lorsque r = 15) peut sembler important, mais il se produit si rarement que le produit est négligeable.
Notre description du jeu de Bill suppose qu’il sélectionne 15 numéros. En réalité, un joueur peut sélectionner moins de 15 numéros ; différents gains sont associés à différents résultats. Supposons que Ginny ne sélectionne que 7 numéros sur sa carte de Keno. Le Tableau III montre la probabilité qu’elle sélectionne r numéros gagnants (0 < r < 7) ;
Soit la probabilité suivante :
\[ \frac{\binom{20}{r}\binom{60}{7-r}}{\binom{80}{7}} \]
La Table III affiche également les gains associés à chaque valeur de r, ainsi que les produits des probabilités et des gains.
rvalue<-0:7
probability<-dhyper(rvalue,20,60,7)
payoff<-c(rep(0,4),2,23,350,5000)
product<-probability*payoff
table3<-data.frame(rvalue,probability,payoff,product)
#formater les colonnes "payoff" et "product" avec un signe dollar
table3$payoff<-sprintf("$%.f",table3$payoff)
table3$product<-sprintf("$%.7s",table3$product)
colnames(table3) <- c("Value of r (number of winning numbers selected by Ginny)", "Probability ", "Payoff ", "Product ")
#Ajouter un titre
title<-"TABLE III"
# Utiliser kable avec kableExtra pour appliquer des styles
kable(table3, align = "c") %>%
kable_styling(full_width = FALSE, position = "center", font_size = 12) %>%
add_header_above(c("TABLE III" = 4)) %>%
row_spec(0, bold = TRUE) # Pour rendre la première ligne en gras| Value of r (number of winning numbers selected by Ginny) | Probability | Payoff | Product |
|---|---|---|---|
| 0 | 0.1215743 | $0 | $0 |
| 1 | 0.3151925 | $0 | $0 |
| 2 | 0.3266541 | $0 | $0 |
| 3 | 0.1749932 | $0 | $0 |
| 4 | 0.0521910 | $2 | $0.10438 |
| 5 | 0.0086385 | $23 | $0.19868 |
| 6 | 0.0007321 | $350 | $0.25622 |
| 7 | 0.0000244 | $5000 | $0.12201 |
Le total est de 0,68131 $ ou 0,68 $ ; ainsi, les gains espérés de Ginny sont de 0,68 $. Rappelons que ceux de Bill étaient de 0,67 $. Chacun reçoit environ
\[ \frac{2}{3} \]
de son investissement de 1,00 $, mais le jeu de Ginny semble légèrement plus attrayant que celui de Bill.
Ginny aurait pu choisir n’importe quel nombre de 1 à 15 inclus pour marquer sur sa carte de Keno. Chacun de ces jeux séparés a sa propre structure de gains.
| “… la probabilité des résultats qui rapportent de l’argent est très faible.” En conclusion, il vaut mieux garder son argent et ne pas jouer au jeu de hasard avec une telle probabilité de gains. |
library(glue)
reference <- glue(
"Référence\n\n",
"Keno Probabilities.\n",
"Bonnie H. Litwiller.\n",
"David R. Duncan."
)
cat(reference) Référence
Keno Probabilities.
Bonnie H. Litwiller.
David R. Duncan.