Tout d'abord, cette question est tirée de este question. Je l'ai fait parce que je pense que cette partie est plus importante qu'une sous-partie d'une question plus longue. Si cela vous choque, veuillez me pardonner.
Supposons que vous ayez un algorithme qui génère du hasard. Maintenant, comment le tester ? Ou, pour être plus direct, supposons que vous ayez un algorithme qui mélange un jeu de cartes. Comment pouvez-vous vérifier qu'il s'agit d'un algorithme parfaitement aléatoire ?
Pour ajouter un peu de théorie au problème - Un jeu de cartes peut être mélangé en 52 ! (52 factorielles) différentes. Prenez un jeu de cartes, mélangez-le à la main et notez l'ordre de toutes les cartes. Quelle est la probabilité que vous ayez obtenu exactement ce mélange ? Réponse : 1 / 52 !.
Quelle est la probabilité que vous obteniez, après avoir mélangé les cartes, des A, K, Q, J ... de chaque couleur dans une séquence ? Réponse 1 / 52 !
Ainsi, le fait de mélanger les cartes une seule fois et de regarder le résultat ne vous donnera absolument aucune information sur le caractère aléatoire de votre algorithme de mélange. Deux fois et vous avez plus d'informations, trois encore plus...
Comment tester en boîte noire le caractère aléatoire d'un algorithme de brassage ?