PROJET KENO

Author

Linda AIT ELHADJ et Oumou Salamata BARRY

Introduction

Keno 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.

Code
# Chargement des bibliothèques
library(tidyverse)
library(kableExtra)   # Pour la personnalisation des tableaux

Possibilité de tirage

Pour 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):

Code
# 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
TABLE I
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.

Code
tvalue<- 0:6
Prob_sum <- sum (dhyper(tvalue,20,60,15))
Prob_sum
[1] 0.9613466

Distribution des échantillons

Ce 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.

Code
# 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))

Code
# 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 Bill

Pour 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.

Code
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
Table II: Results of Product Calculation
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.

Code
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
TABLE III
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.
Code
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.