Est-il possible de générer des nombres aléatoires via une simulation de processus physique?

StackOverflow https://stackoverflow.com/questions/620921

  •  05-07-2019
  •  | 
  •  

Question

Est-il possible de générer des nombres aléatoires par simulation de processus physique?

Si je simule le lancer physique d’un dé (c’est-à-dire que vous le ramassez, le secouez dans votre main, le lâchez-le sur la table et enregistrez le côté qui se termine "en haut" ...), cela produira un " aléatoire " numéro ou aurais-je juste une simulation complexe qui ne réalise vraiment rien.

Était-ce utile?

La solution

Vous obtiendrez une simulation complexe qui n'apporte vraiment rien.

(autre que de renvoyer à chaque fois la même valeur ou d'ajouter une complexité inutile à un PRNG existant)

Sauf si vous semez dans l'environnement simulé avec "aléatoire". variables (c’est-à-dire qu’elles dépendent d’un moyen différent de générer des nombres aléatoires), vous obtiendrez toujours la même valeur, car chaque étape du processus se déroulera de la même manière à chaque fois.

Dites que vous avez utilisé un générateur de nombres pseudo-aléatoires de base (PRNG):

Etant donné que votre simulation serait aussi aléatoire que l’autre PRNG que vous utilisiez, vous pouvez également utiliser l’autre PRNG directement, sans aucun travail supplémentaire! (En fait, votre simulation ne peut rien faire si ce n'est de rendre la sortie moins aléatoire que les valeurs de votre PRNG de base)

Autres conseils

Oui, vous n’avez "qu’une simulation complexe qui ne donne vraiment rien".

Pourquoi simuler un processus physique aléatoire, alors que vous pouvez en utiliser un réel?

Il existe une multitude de questions sur les générateurs de nombres aléatoires sur les SO. En voici quelques-unes:

générateur de nombres aléatoires véritables

Existe-t-il des générateurs de nombres aléatoires sans état?

Quel type de nombre aléatoire Un générateur est-il utilisé dans l’industrie du jeu de casino?

Votre algorithme sera un générateur de nombres pseudo-aléatoires, c’est-à-dire qu’il prendra une graine aléatoire et produira des chaînes de nombres potentiellement volumineuses qui paraîtront assez aléatoires.

Cependant, rien ne garantit que votre sortie aléatoire sera de la qualité dont vous avez besoin pour la cryptographie ou à d’autres fins. J'aurais tendance à penser qu'il y aura des schémas répétés indésirables dans votre travail et que trop de travail ira à la physique du problème, et pas assez pour produire un pseudo-hasard. (Désolé pour le mauvais goût, mais voilà en un mot.) Il existe des pseudos générateurs de nombres efficaces, et j'utiliserais l'un des casiers.

Cela étant dit, il s’agit peut-être d’une expérience intéressante et informative pour vos propres besoins.

Le plus tard.

Sauf si vous injectez des facteurs aléatoires (ou pseudo aléatoires), la simulation produira les mêmes résultats à chaque fois.

Ce sera toujours un nombre pseudo-aléatoire, car vous utiliserez probablement un générateur de nombres pseudo-aléatoires pour simuler tous les rebonds du dé dans vos mains.

Vous devez d’abord définir le terme "aléatoire". Vous pouvez générer des nombres trivialement imprévisibles en utilisant un ensemble étrange de calculs, bien sûr. Mais vous n’obtiendrez pas d’aléatoire utile ni une distribution uniforme des nombres.

Une simulation physique telle que celle que vous décrivez nécessiterait en réalité une sorte de générateur de nombres aléatoires à un moment donné du calcul. Heureusement, random () est facile à utiliser.

À moins que vous ne soyez prêt à modéliser l'état quantique de deux matrices entières, vous n'aurez rien d'aléatoire ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top