human
Comment les ordinateurs génèrent-ils des nombres aléatoires ? Quelles sont les méthodes courantes et dans quelle mesure les nombres générés par un ordinateur sont-ils réellement aléatoires ? Explique comme si j'avais cinq ans.
gpt
Je ne suis pas sûr des puces AMD, mais j'ai quelques connaissances sur la façon dont les puces Intel le font du côté matériel. Dans les nouvelles générations (2012+), les puces Intel ont un générateur analogique de bits aléatoires, qui crache soit un 0 soit un 1 en environ 50 ps, ​​soit 50 trillionièmes de seconde. Le fonctionnement du générateur analogique de bits aléatoires consiste à placer deux inverseurs orientés dans des directions opposées entre deux transistors actifs, ce qui force les nœuds de chaque côté dans le même état. Lorsque les transistors s'éteignent , le bruit du mouvement thermique ( qui est , par nature , aussi proche du " aléatoire " que possible ) force un nœud à un 1 logique et l' autre à un 0 logique , mesurant ainsi l' état de l' un des les nœuds vous donne un 0 ou 1 aléatoire. Vous pouvez l'imaginer comme mettre deux poids égaux aux deux extrémités d'une balançoire, avec deux personnes qui la maintiennent en place. Une fois que les personnes qui le tiennent lâchent prise, le mouvement quelque peu aléatoire de l'air autour de lui finit par l'incliner au moins un peu, même s'il devrait être équilibré. La puce mesure simplement dans quel sens la balançoire s'est inclinée, ce qui est assez aléatoire. Ainsi , si vous pouvez générer un grand nombre de bits aléatoires assez rapidement , il devient beaucoup plus facile de générer les nombres aléatoires dont les ordinateurs ont besoin . Il y aura des algorithmes qui utiliseront d' autres choses pseudo - aléatoires comme les frappes , la position du curseur , le temps , essentiellement n'importe quel nombre qu'ils peuvent entrer , pour rendre utilisable le processus de génération d' un nombre réel à partir de tout ce que la puce analogique a craché , mais la programmation est n ce n'est pas mon domaine donc je ne peux pas trop bien expliquer ce genre de choses. Dans les puces plus anciennes, ils faisaient passer une tension alternative "lente" à travers une résistance pour créer du bruit (la conductance d'une résistance varie légèrement avec des choses comme la température, donc elle déforme légèrement le signal qui la traverse), puis l'amplifie pour augmenter le bruit , qui donne une « horloge » qui « fait tic tac » de manière erratique . Ils échantillonneraient ensuite cette horloge erratique par rapport à une horloge régulière beaucoup plus rapide, qui donne des nombres aléatoires décents, mais qui est plus prévisible, gourmande en énergie et plus lente que la nouvelle méthode. Version TL; DR ELI5 (je sais que je suis devenu trop technique) : tout appareil que vous construisez ne se comportera pas exactement comme vous le souhaitez, et généralement les sources de ce qu'un ingénieur appellerait une "erreur" sont assez aléatoires (des choses comme la chaleur, des problèmes mineurs imperfections , usure ) . Des ingénieurs astucieux ont utilisé le fait qu'il existe de petites quantités d'aléatoire inhérentes au comportement des circuits analogiques pour mesurer ces fluctuations aléatoires et les utiliser pour le calcul. edit : soit dit en passant , le nombre ou la valeur aléatoire que le matériel produit est généralement appelé une " graine " , qui est ensuite transmise à un programme pour le rendre plus aléatoire . la partie difficile de la génération de nombres aléatoires est de trouver une valeur de départ vraiment aléatoire , il est assez facile de travailler à partir de là .