J’avais parlé cet été de l’utilisation des chiffres du us treasury balance comme générateur (involontaire) de nombres aléatoires. Cet été, un débat intéressant a secoué le Québec, suite à la plainte déposée par deux joueurs (compulsifs) de l’Extra. L’histoire est raconté en détails sur le site de canoe.ca, ou de lapresse.ca. Le jeu est assez simple. L’histoire un peu moins (c’est pour cela que j’ai préféré renvoyer vers deux sources racontant la même histoire). Pour essayer d’expliquer simplement ce qui s’est passé revenons un peu sur le jeu. Tous les jours, Loto-Québec tire au hasard un nombre de 7 chiffres.

Quand on achète un ticket, un numéro nous est attribué… et on espère qu’il sera tiré le soir. Mais le soucis est que les joueurs qui intentent un procès n’achetaient pas un mais dix tickets. Et étrangement, à chaque fois, ils avaient un ticket gagnant, et un seul.
En fait, quand on achetait dix combinaisons d’extra, il semble que le premier chiffre sans remise parmi 0 à 9, les cinq suivants avec remise parmi 0 à 9 et le dernier sans remise parmi 0 à 9 (pour reprendre la formulation qu’a utilisé Christian Léger de l’UdM pour me l’expliquer). Sur un achat, on ne voit rien, on a des nombres uniforme… mais avec répétition, ça se complique.
En fait, c’est toujours quand on étudie la dynamique des générateurs de nombres aléatoires que l’on a des surprises.
Par exemple sur les tirages de l’extra (et non pas les numéros des combinaisons des billets, car on ne les trouve pas sur internet, il faudrait acheter les billets pour refaire l’expérience). On peut récupérer l’historique des tirages en ligne, sur le site de loto-quebec.com.
> extra=read.table("http://freakonometrics.blog. free.fr/public/data/extra-loto-quebec.csv",sep=";",header=TRUE) > n=1940 > extra=extra[1:(n-1),1:2] > X=extra[,2]/10000000

Mais générer du hasard, ça n’est pas que ça… Et sur cette série, si on fait des tests sur l’indépendance des observations, on est un peu surpris,
> library(lawstat) > runs.test(X, plot.it = FALSE, alternative = "two.sided") Runs Test - Two sided data: X Standardized Runs Statistic = -1.8, p-value = 0.07273 > runs.test(X, plot.it = FALSE, alternative = "positive.correlated") Runs Test - Positive Correlated data: X Standardized Runs Statistic = -1.8, p-value = 0.03637 > library(FitAR) > LjungBoxTest(qnorm(X), k=0, lag.max=12, + StartLag=1, SquaredQ=FALSE) m Qm pvalue 1 7.2 0.0075 2 9.2 0.0102 3 10.9 0.0125 4 10.9 0.0276 5 15.3 0.0090 6 15.4 0.0171 7 16.1 0.0244 8 16.3 0.0380 9 16.7 0.0538 10 20.6 0.0240 11 20.8 0.0357 12 20.8 0.0533


La loi de Benford (que j’avais pu évoquer 



(histoire de formaliser un peu). Le but du jeu est dedeviner sur quelle face la pièce va tomber: si on devine bien, on gagne, sinon on perd. Et le but de mon billet est de comprendre quelle est la stratégie qu’il convient de mettre en œuvrer si on connaît, ou si on estime
.
, on prédit pile, sinon on prédit face (à chaque lancer si on fait plusieurs lancers consécutifs).
la variable correspondant à la valeur prise au lancer, disons 1 si on tomber sur pile et 0 sur face. Et notons
la valeur prédite. On gagne si
, et la probabilité de gagner est alors




. Considérons le polynôme
, dont les racines sont
et
, i.e sur
,


lancers, on a un échantillon
et on estime la probabilité de tomber sur pile par
(qui tire une loi uniforme sur le segment unité), pour la prochaine valeur, on prédit

, et la probabilité de gagner est alors

(comme auparavant). En revanche, dans le second cas, le calcul de la probabilité de gagner est






on obtient
, et on part de 0.
Et si on regarde l’histogramme et la fonction d’autocorrélation sur les 10 000 premières valeurs, on a gardé l’uniformité (ou tout du moins on ne doit pas en être trop loin), et on n’a plus d’autocorrélation.
Mais cet algorithme présente de très gros défauts numériques. Je n’aborderais pas ici les problèmes de ce générateur (je l’avais fait dans le chapitre sur les simulations dans le tome 2 du livre avec Michel Denuit).

. Par exemple si on prend comme valeur initiale π-3, on obtient, avec une simple fonction R
Plus généralement sur le caractère aléatoire des décimales de π, je renvoie aux publications de David H. Bailey (
Bref, en l’état cette méthode n’est pas vraiment géniale pour générer du “hasard“… à suivre donc.
sur [0,1].


Bref, on a à notre disposition des gens qui ont tiré des boules dans une urne. Alors rigoureusement, il faut faire attention car les tirages sont fait sans remise pour les 7 premières boules, puis on remet les boules pour le tirage suivant… Bref, les tirages ne sont pas rigoureusement indépendant les uns des autres (on ne peut pas avoir 3 fois consécutives le nombre “13”, alors qu’en théorie cela devrait être possible).