J'ai écrit un programme pour simuler un pronation aléatoire de la carte.
Chaque carte est numérotée, avec une couleur allant de CLUBS, DIAMONDS, HEARTS, SPADES
et allant de deux à dix, puis Jack, Queen, King et Ace. Ainsi, les deux clubs ont un nombre de 1, les trois clubs un 2 .... L'as des clubs est 13 ... L'as de pique est 52.
L'une des méthodes permettant de déterminer le mélange des cartes est de la comparer à une carte non mélangée et de voir si l'ordre des cartes est corrélé.
Autrement dit, je pourrais avoir ces cartes, avec la carte non mélangée pour comparaison:
Unshuffled Shuffled Unshuffled number Shuffled number
Two of Clubs Three of Clubs 1 2
Three of Clubs Two of Clubs 2 1
Four of Clubs Five of Clubs 3 4
Five of Clubs Four of Clubs 4 3
La corrélation par la méthode Pearson serait: 0,6
Avec un grand jeu de cartes (toutes les 52), vous pourriez voir des modèles émerger. Mon hypothèse est qu'après plus de remaniements, vous obtiendrez moins de corrélation.
Cependant, il existe de nombreuses façons de mesurer la corrélation.
J'ai essayé la corrélation de Pearson mais je ne sais pas si c'est la bonne corrélation à utiliser dans cette situation.
Est-ce une mesure de corrélation appropriée? Existe-t-il une mesure plus adaptée?
Points bonus Je vois parfois ce type de données dans mes résultats:
De toute évidence, il existe une certaine corrélation, mais je ne sais pas comment vous mesurez les différentes «lignes de tendance»?
la source
Réponses:
Vous pouvez mesurer le niveau relatif de corrélation (ou plus précisément, le niveau croissant de caractère aléatoire) en utilisant l' entropie de Shannon de la différence de valeur nominale entre toutes les paires de cartes adjacentes.
Voici comment le calculer, pour un jeu de 52 cartes mélangées au hasard. Vous commencez par faire une boucle sur tout le jeu et créer une sorte d'histogramme. Pour chaque position de carte , calculez la différence de valeur faciale . Pour rendre cela plus concret, disons que la carte en ème position est le roi de pique, et la carte en ème position est le quatre de clubs. Nous avons alors et et . Lorsque vous arrivez à , c'est un cas spécial; vous retournez au début du jeu et prenezi = 1 , 2 , . . . , 52 Δ Fje= Fi + 1- Fje ( i + 1 ) je Fi + 1= 51 Fje= 3 ΔFi=51−3=48 i=52 ΔF52=F1−F52 . Si vous vous retrouvez avec des nombres négatifs pour l'un des , ajoutez 52 pour ramener la différence de valeur faciale dans la plage 1-52.ΔF
Vous vous retrouverez avec un ensemble de différences de valeur nominale pour 52 paires de cartes adjacentes, chacune tombant dans une plage autorisée de 1-52; compter la fréquence relative de ceux-ci en utilisant un histogramme (c.-à-d. un tableau unidimensionnel) avec 52 éléments. L'histogramme enregistre une sorte de «distribution de probabilité observée» pour le jeu; vous pouvez normaliser cette distribution en divisant les nombres dans chaque casier par 52. Vous vous retrouverez ainsi avec une série de variables où chacune peut prendre un discret plage de valeurs possibles: {0, 1/52, 2/52, 3/52, etc.} selon le nombre de différences de valeur faciale par paire qui se sont retrouvées au hasard dans une case particulière de l'histogramme.p1,p2,...p52
Une fois que vous avez l'histogramme, vous pouvez calculer l'entropie de Shannon pour une itération de mélange particulière comme
la source
Je sais que ce poste a presque 4 ans, mais je suis un cryptanalyste amateur et j'étudie les chiffres des cartes à jouer . En conséquence, je suis revenu à maintes reprises sur ce post pour expliquer le brassage de deck comme une source d'entropie pour la saisie aléatoire du deck. Enfin, j'ai décidé de vérifier la réponse par stachyre en mélangeant le jeu à la main et en estimant l'entropie du jeu après chaque mélange.
TL; DR, pour maximiser l'entropie du pont:
Tout d'abord, tout ce que Stachyra a mentionné pour calculer l'entropie de Shannon est correct. Il peut se résumer ainsi:
Là où stachyra fait une supposition subtile, c'est que la mise en œuvre d'un remaniement humain dans un programme informatique va venir avec des bagages. Avec les cartes à jouer sur papier, au fur et à mesure qu'elles s'utilisent, l'huile de vos mains est transférée sur les cartes. Sur une longue période, en raison de l'accumulation d'huile, les cartes commenceront à coller ensemble, et cela se terminera dans votre mélange. Plus le jeu est utilisé, plus deux cartes adjacentes ou plus sont susceptibles de rester ensemble, et plus cela se produit fréquemment.
De plus, supposons que les deux clubs et le valet de cœur restent ensemble. Ils peuvent finir coincés ensemble pendant la durée de votre brassage, sans jamais se séparer. Cela pourrait être imité dans un programme informatique, mais ce n'est pas le cas avec la routine R de stachyra.
De plus, stachyra a une variable de manipulation "mixprob". Sans bien comprendre cette variable, c'est un peu une boîte noire. Vous pouvez le définir de manière incorrecte, affectant les résultats. Donc, je voulais m'assurer que son intuition était correcte. Je l'ai donc vérifié à la main.
J'ai mélangé le jeu 20 fois à la main, dans deux cas différents (40 mélanges au total). Dans le premier cas, je viens de mélanger, en gardant les coupes droite et gauche presque égales. Dans le deuxième cas, j'ai coupé délibérément le jeu loin du milieu du jeu (1/3, 2/5, 1/4, etc.) avant de faire une coupe uniforme pour le shuffle du fusil. Mon instinct dans le deuxième cas était qu'en coupant le pont avant de mélanger, et en restant loin du milieu, je pouvais introduire la diffusion dans le pont plus rapidement que le brassage de fusil d'origine.
Voici les résultats. Tout d'abord, le réarrangement du fusil droit:
Et voici couper le pont combiné avec un mélange de fusils:
Il semble que l'entropie soit maximisée dans environ la moitié du temps de la revendication par stachyra. De plus, mon intuition était correcte: couper le pont délibérément loin du milieu en premier, avant de mélanger le fusil, introduisait plus de diffusion dans le pont. Cependant, après environ 5 shuffles, cela n'avait plus vraiment d'importance. Vous pouvez voir qu'après environ 6-7 shuffles, l'entropie est maximisée, contre 10-12 car la revendication a fait mon stachyre. Serait-il possible que 7 shuffles soient suffisants, ou suis-je aveuglé?
Vous pouvez voir mes données sur Google Sheets . Il est possible que j'aie enregistré une ou deux cartes à jouer de manière incorrecte, donc je ne peux pas garantir une précision de 100% avec les données.
Il est important que vos résultats soient également vérifiés de manière indépendante. Brad Mann, du Département de mathématiques de l'Université de Harvard, a étudié le nombre de fois qu'il faudrait pour mélanger un jeu de cartes avant que la prévisibilité d'une carte du jeu soit complètement imprévisible (l'entropie de Shannon est maximisée). Ses résultats se trouvent dans ce PDF de 33 pages .
Ce qui est intéressant avec ses conclusions, c'est qu'il vérifie en fait de manière indépendante un article du Persi Diaconis publié dans le New York Times en 1990 , qui prétend que 7 shuffles sont suffisants pour bien mélanger un jeu de cartes via le riffle shuffle.
Brad Mann parcourt quelques modèles mathématiques différents dans le brassage, y compris les chaînes de Markov, et arrive à la conclusion suivante:
Brad Mann vient de vérifier indépendamment le résultat de Stachyra, et non le mien. J'ai donc regardé mes données de plus près et j'ai découvert pourquoi 7 shuffles ne suffisaient pas. Tout d'abord, l'entropie théorique maximale de Shannon en bits pour n'importe quelle carte du jeu est log (52) / log (2) ~ = 5,7 bits. Mais mes données ne cassent jamais vraiment bien au-dessus de 5 bits. Curieux, j'ai créé un tableau de 52 éléments en Python, mélangé ce tableau:
Le calcul de son entropie par carte donne environ 4,8 bits. Faire cela une douzaine de fois montre des résultats similaires variant entre 5,2 bits et 4,6 bits, avec 4,8 à 4,9 comme moyenne. Donc, regarder la valeur d'entropie brute de mes données ne suffit pas, sinon je pourrais l'appeler bien à 5 shuffles.
Quand je regarde de plus près mes données, j'ai remarqué le nombre de "zéro seaux". Ce sont des compartiments où il n'y a pas de données pour les deltas entre les faces de carte pour ce nombre. Par exemple, lors de la soustraction de la valeur de deux cartes adjacentes, il n'y a pas de résultat "15" après que les 52 deltas ont été calculés.
Je vois qu'il finit par s'installer autour de 17-18 "zéro seaux" autour de 11-12 shuffles. Effectivement, mon deck mélangé via Python fait en moyenne 17-18 "zéro seau", avec un maximum de 21 et un minimum de 14. Pourquoi 17-18 est le résultat réglé, je ne peux pas l'expliquer ... pour le moment. Mais, il semble que je veuille à la fois ~ 4,8 bits d'entropie ET 17 "seaux zéro".
Avec mon stock de fusils, c'est 11-12 shuffles. Avec mon découpage, c'est 6-7. Donc, en ce qui concerne les jeux, je recommanderais de couper et mélanger. Non seulement cela garantit que les cartes du haut et du bas se mélangent dans le jeu à chaque mélange, c'est aussi tout simplement plus rapide que les 11 à 12 mélanges. Je ne sais pas pour vous, mais quand je joue à des jeux de cartes avec ma famille et mes amis, ils ne sont pas assez patients pour que je fasse 12 shuffles shiffles.
la source