Test du poker

Générateurs à tester

\(\(standardMin[x_] := 
        Module[{}, 
Mod[16807\ x, 
            2147483647]
];\)\)

\(\(randU[x_] := 
        Module[{}, 
Mod[65539\ x, 
            2147483648]
];\)\)

Construction d'une liste de n nombres pseudo-aléatoires dans l'intervalle [0,1[ avec le standard minimal

suite1 = {999999};
n = 4000;
For[i = 2, i <= n, 
        AppendTo[suite1, 
          standardMin[Last[suite1]]]; i++];
suite1 = Floor[10*suite1/2147483647];
mains1 = Partition[suite1, 4];

Construction d'une liste de n nombres pseudo-aléatoires dans l'intervalle [0,1[ avec randU

suite2 = {999999};
n = 4000;
For[i = 2, i <= n, 
        AppendTo[suite2, 
          randU[Last[suite2]]]; i++];
suite2 = Floor[10*suite2/2147483648];
mains2 = Partition[suite2, 4];

Statistiques sur les mains

Ordre pour la liste "effectifs": tous différents, une paire, deux paires, trois identiques, quatre identiques

comptes[mains_] := 
      Module[{}, 
effectifs = {0, 0, 0, 0, 
            0}; 
For[i = 1, 
          i ≤ 
            n/4, {
L = {};  
For[j = 0, 
              j ≤ 
                9, {AppendTo[L, 
                  Count[mains[[i]], 
                    j]]}; j++]; 
L = 
              Reverse[Sort[Select[L, #1 > 0 &]]]; 
If[
              L[[1]] == 
                1, effectifs[[1]]++]; 
If[(L[[1]] == 
                    2)  &&  (L[[2]] == 
                    1), effectifs[[2]]++]; 
If[(L[[1]] == 
                    2)  &&  (L[[2]] == 
                    2), effectifs[[3]]++]; 
If[
              L[[1]] == 
                3, effectifs[[4]]++]; 
If[
              L[[1]] == 
                4, effectifs[[5]]++]
}; 
i++
]; 
effectifs
]

Calcul de Q

Seuil 5% : 9.49 (voir table)

\(calculQ[effectifs_] := 
      Module[{Q, théorique, observé, 
          diff}, 
théorique = {504, 432, 27, 36, 
            1}; 
observé = 
          effectifs; 
diff = 
          observé - théorique; 
Q = 
          0; 
For[i = 1, i ≤ 5, 
          Q += \((diff[\([i]\)]^2/
                théorique[\([i]\)])\); \(i++\)]; 
Print["Q = ", Q // N]
]\)

Résultats

Ordre pour la liste "effectifs": tous différents, une paire, deux paires, trois identiques, quatre identiques.

Résultats pour le standard minimal

effectifs1 = comptes[mains1]
calculQ[effectifs1]

Résultats pour RandU

effectifs2 = comptes[mains2]
calculQ[effectifs2]