human
Comment fait-on un générateur de nombres aléatoires ? Peut-être plus comme ELI15, mais j'y ai pensé toute la matinée, et ça me déconcerte. Explique comme si j'avais cinq ans.
gpt
Tout le monde ici a parlé de la façon de faire des nombres * pseudo * aléatoires dans le logiciel , donc je vais prendre une approche différente et expliquer comment le * vrai * hasard est fait dans le matériel des puces Intel actuelles . # # Balancing Elephant Ils poussent un élément de circuit jusqu'au point où il a une tension qui est à mi-chemin entre un « zéro » et un « un ». C'est ce qu'on appelle un état * métastable *. Il finira par basculer dans un sens ou dans l'autre, mais dans quel sens il va dépendre du bruit thermique et d'autres choses qui se passent autour de ce circuit. Ils le font environ 3 milliards de fois par seconde, générant 3 milliards de bits aléatoires par seconde. Bien sûr , ces bits ne sont pas encore tout à fait * assez * aléatoires , car il y a un peu de prévisibilité à la chaleur et au bruit du circuit autour du circuit . Ils appellent donc ces 3 milliards de bits par seconde une « source d'entropie ». Ils sont à environ 80 % aléatoires. # # Nettoyage du mess de l' éléphant Ensuite , ils le font passer à travers des circuits fonctionnant à environ 800 MHz ( par opposition aux 3 GHz utilisés ci - dessus ) , pour faire un " conditionnement " de ces bits en utilisant des calculs sophistiqués ( un peu comme le pseudo - des trucs aléatoires que tout le monde a décrits ) pour compresser ce grand nombre de bits " principalement aléatoires " en un plus petit nombre de bits " vraiment aléatoires " . Cela leur permet de répondre à certaines normes de certification pour le caractère aléatoire. (Pour ceux qui s'en soucient : conforme NIST SP800-90 et certifiable FIPS.) Après cela, ils se retrouvent avec 128 bits aléatoires tous les 11 cycles d'horloge. Ensuite, tous les 512 bits, ils "réamorcent" ce générateur à partir de la source d'entropie. * * tl;dr Very ELI5 * * La construction d'un circuit électronique comme un éléphant vacillant sur une très haute lame de couteau. Finalement , l' éléphant tombera à gauche ou à droite en fonction des rafales de vent , et ils appellent cela un « un » ou un « zéro » . Ils font cela des milliards de fois par seconde , nettoient un peu les résultats et construisent des nombres aléatoires à partir de cette chaîne de uns et de zéros. * * Matériel bonus : pas ELI5 * * Si vous êtes un passionné de logiciels et que vous souhaitez utiliser cette fonction pour générer un nombre aléatoire de 16, 32 ou 64 bits, utilisez simplement la nouvelle instruction « RDRAND r64 ». Vous pouvez vérifier si cette fonction est disponible sur votre puce CPU en exécutant l'instruction « CPUID » et en vérifiant le bit30 du registre ECX. Si c'est " 1 " alors vous avez cette fonction . Sinon, pas de dés.