human
Comment un ordinateur basé sur des règles et une logique peut-il générer un nombre vraiment aléatoire ? À peu près comme le titre l'indique - il doit sûrement suivre une sorte de modèle et ne pas être véritablement aléatoire ? Explique comme si j'avais cinq ans.
gpt
Salut ! La première chose à comprendre est que nous utilisons beaucoup les nombres aléatoires en informatique ( Cryptographie , Jeux , Jeux , Statistiques ) . Pour cela, nous avons créé plusieurs méthodes de calcul pour la génération de nombres aléatoires, mais beaucoup n'atteignent pas l'objectif du vrai hasard pour répondre à d'autres problèmes (efficacité, vitesse, mémoire). En informatique aujourd'hui , nous avons 2 méthodes principales : * Génération de nombres aléatoires vrais ( qui sont tous des moyens physiques de générer des nombres aléatoires et donc des méthodes * plus lentes * ) * Génération de nombres pseudo - aléatoires ( qui sont des méthodes de calcul utilisant des algorithmes et puisque nous avons des méthodes super méga-machines à cœur rapides hourra * méthodes plus rapides * ) La [ réponse ] ( URL_1 ) de [ /u / qixrih ] ( URL_0 ) couvre assez bien les dernières nouveautés . Je vais essayer d' en faire une version ELI5 : C'est une fonction tirée directement de [ " The C Programming Language , " de Kernighan et Ritchie ] ( URL_2 ) : int rand ( ) { random_seed = random_seed * 1103515245 +12345 ; retour (entier non signé)(random_seed / 65536) % 32768 ; } Cette formule suppose l' existence d' une variable nommée * * random_seed * * ( en utilisant généralement la date du système ) Fondamentalement , vous pouvez le faire vous - même , imaginez que vous voulez créer un algorithme qui génère un nombre aléatoire entre 0 et 9 . Vous devez d' abord trouver une graine , vous pouvez même la choisir vous - même comme 10 . Ensuite , en utilisant Maths , vous créeriez une formule simple qui donnerait idéalement une longue séquence de nombres avec une * * distribution numérique forte * * ( même nombre de 0 , de 1 , de 2 , de 3 , de 4 , etc ... ) et avec un * * manque de prévisibilité * * ( comme les 1 ne sont pas toujours le début et les 0 à la fin ) et ensuite vous dites à la machine de choisir le premier nombre de cette séquence comme premier nombre aléatoire et vous continuez si vous avez besoin de continuer à générer . Par exemple ( nous utiliserons les formules K & R ) : ( ( 10 * 1103515245 +12345)/65536)%32768 nous donne 44607423505664567674 .......... ( juste les 20 premiers chiffres ) It ' Ce n'est pas si génial, nous n'avons pas de 9, de 8, de 1 et la distribution n'est pas si bonne, mais les ordinateurs utilisent des séquences de nombres beaucoup plus grandes, puis la distribution s'améliore beaucoup. Fondamentalement, le manque de prévisibilité est résolu en utilisant la graine aléatoire (définie par la date du système) et la distribution via la formule. J'espère que vous comprendrez mieux de cette façon. J'aurais aimé pouvoir penser à une analogie, mais aucune ne m'est venue à l'esprit. Pour ceux d'entre vous qui sont intéressés par cela, nous sommes de plus en plus capables de créer de vrais nombres générés aléatoirement plus rapidement, voici quelques techniques différentes (essentiellement lire l'entropie) pour google : * Radioactive Decay * Thermal Noise * Shot noise * Clock drift * Bruit radio [ Cet article ] ( URL_3 ) explique le dernier moyen physique le plus rapide pour générer des nombres aléatoires à l'aide de lasers à semi-conducteurs. J'espère que cela a aidé un peu. Source : Ingénieur logiciel