Pouvons-nous générer des nombres aléatoires en utilisant des nombres irrationnels comme π et e?


21

Les nombres irrationnels comme , et ont une séquence unique et non répétitive après le point décimal. Si l' on extrait le chiffres -ème de ces chiffres (où est le nombre de fois que la méthode est appelée) et faire un numéro avec les chiffres comme il est, devrions - nous pas un générateur de nombres aléatoires parfait? Par exemple, si nous utilisons , et , le premier nombre est 123, le second 471, le suivant 184 et ainsi de suite.πe2nn2eπ


30
Vous avez une étrange définition de "aléatoire" dans votre tête. "Aléatoire" signifie "imprévisible". Comment votre séquence est-elle imprévisible? Quelle définition de «aléatoire» avez-vous en tête? Peut-être que ce que vous appelez "aléatoire" a un autre nom.
Eric Lippert

7
Notez que l' algorithme de spigot peut être utilisé pour générer n'importe quel chiffre hexadécimal en pi, sans avoir à générer de chiffres antérieurs.
rcgldr

10
@EricLippert Tous les générateurs de nombres pseudo-aléatoires ne sont-ils pas prévisibles?
Federico Poloni

7
Le terme est revenu plusieurs fois: il s'agit d'un "nombre aléatoire de pseudo" et non d'un "nombre aléatoire". C'est un nombre généré par algorithme (donc pas aléatoire), mais qui a de nombreuses propriétés souhaitables que les nombres aléatoires ont. Un autre algorithme est l'algorithme "NYC phonebook", où vous descendez la liste des numéros de téléphone, par ordre alphabétique, et prenez le dernier chiffre de chacun d'eux. Pas aléatoire, mais pseudo-aléatoire avec quelques comportements statistiques plutôt sympas!
Cort Ammon - Rétablir Monica le

5
"Pseudo" signifie "similaire mais pas". Les nombres pseudo aléatoires sont donc similaires, mais pas aléatoires. Je ne suis donc pas en train de suivre votre pensée ici. Maintenant, les PRNG de crypto-force ont la propriété souhaitable que si l'état interne est inconnu de l'attaquant, aucun test statistique que nous possédons ne peut distinguer un crypto PRNG d'un vrai RNG, et cela inclut leur manque de prévisibilité. Mais les chiffres de pi n'ont pas cette propriété; ils sont hautement prévisibles.
Eric Lippert

Réponses:


17

L'inconvénient le plus évident est la complexité inutile des algorithmes PRNG basés sur des nombres irrationnels. Ils nécessitent beaucoup plus de calculs par chiffre généré que, par exemple, un LCG; et cette complexité augmente généralement à mesure que vous avancez dans la séquence. Le calcul de 256 bits de π au deux quadrillionième bit a pris 23 jours sur 1000 ordinateurs (en 2010) - une complexité plutôt prohibitive pour un RNG.


47

Pour toute définition raisonnable de parfait, le mécanisme que vous décrivez n'est pas un générateur de nombres aléatoires parfait.

  • La non-répétition ne suffit pas. Le nombre décimal 0.101001000100001 est non répétitif mais c'est un terrible générateur de chiffres aléatoires, puisque la réponse est «toujours» zéro, parfois un, et jamais rien d'autre.

  • Nous ne savons pas vraiment si chaque chiffre se produit également souvent dans l'expansion décimale de π ou  e (bien que nous soupçonnons qu'ils le font).

  • Dans de nombreuses situations, nous exigeons que les nombres aléatoires soient imprévisibles (en effet, si vous demandiez à une personne au hasard ce que signifie "aléatoire", elle dirait probablement quelque chose sur l'imprévisibilité). Les chiffres des constantes bien connues sont totalement prévisibles.

  • Nous voulons généralement générer des nombres aléatoires assez rapidement, mais générer des chiffres successifs de constantes mathématiques a tendance à être assez coûteux.

  • Il est cependant vrai que les chiffres de π et  e semblent statistiquement aléatoires, en ce sens que chaque séquence de chiffres possible semble se produire aussi souvent qu'elle le devrait. Ainsi, par exemple, chaque chiffre se produit très près d'une fois sur dix; chaque séquence à deux chiffres très proche d'un sur cent, et ainsi de suite.


11
Pour le troisième point, il doit y avoir une sorte d'entrée `` secrète '' dans votre processus de génération pour qu'il soit imprévisible (le processus de génération lui-même devrait être déterministe si nous ne voulons pas compter sur un autre générateur de nombres aléatoires). Cette entrée supplémentaire est souvent appelée une graine .
Lézard discret

6
@Discretelizard Cela est vrai, mais il n'y a pas beaucoup de place pour l'amorçage au-delà de "renvoyer des chiffres successifs commençant par la position ". Au moment où vous avez vu 2 log de chiffres, cette séquence ne se produit que quelques fois dans le premier de 2 chiffres de π , il est donc unique dans le premier de chiffres avec une forte probabilité , et vous savez la graine. s2logss2πs
David Richerby

2
@Barmar: À ce stade, vous devez vous demander si cette technique est vraiment plus performante (et plus économe en espace) qu'un PRNG "standard".
Kevin

2
Les chiffres de pi ou e sont totalement imprévisibles, d'autant plus que le visualiseur / destinataire / disjoncteur de code, etc. n'a aucune idée de la longueur de la séquence dans laquelle vous vous trouvez déjà. Si vous commencez au numéro de chiffre 237423 de la séquence, il faudra tellement de temps pour comprendre, que pour être aléatoire.
Ingénieur inversé

10
@DaveBoltman Si nous ne faisons pas quelque chose comme la cryptographie, personne ne s'en souciera suffisamment pour se donner la peine de le comprendre. Si nous faisons de la cryptographie, c'est une supposition standard que votre adversaire sait de quel algorithme vous utilisez qui, dans ce cas, comprend le nombre irrationnel dont la séquence provient et comment vous choisissez les chiffres, à l'exception de tout paramètre tel que msgstr "commencer au chiffre ". Si l'adversaire ne sait pas quel numéro vous utilisez, alors, bien sûr, le chiffre suivant pourrait être n'importe quoi, mais alors il suppose que c'est s et le jeu est terminé. my birthday
David Richerby

29

Il est cryptographiquement inutile car un adversaire peut prédire chaque chiffre. Cela prend également beaucoup de temps.


11
OP ne mentionne jamais la cryptographie ...
AnoE

13
@AnoE Alors? Que ce processus soit cryptographiquement inutile est toujours pertinent parce que la crypto est un utilisateur avide de hasard. Si vous montez les appareils /dev/randomet que /dev/urandomquelqu'un fera invariablement la cryptographie.
Greg Schmit - Réintègre Monica le

6
Vous seriez étonné de voir à quel point la sécurité cryptographique est inutile dans la génération de PRNG en temps réel. les nombres irrationnels sont souvent utilisés dans les PRNG GPU. Il existe de nombreuses applications où la «sécurité» de votre PRNG est tout simplement hors de propos. Ce qui importe dans quelque chose comme la génération de bruit cohérent est la qualité de la distribution et la fréquence de répétition de votre période, et les effets de corrélation dus aux graines adjacentes (qui nécessiteraient des mélangeurs à avalanche pour réparer). Honnêtement, votre réponse est fausse, n'appartient pas ici et devrait probablement être supprimée.
WHN

6
Ce n'est pas une réponse à la question. Notez que le PO de la question liée utilise des nombres aléatoires pour amorcer une analyse de monte carlo. Une mise à jour pour répondre à la question posée devrait être envisagée. mathoverflow.net/questions/26942/…
CramerTV

8
Il existe certainement de nombreuses applications où les PRNG n'ont pas besoin d'être sécurisés cryptographiquement. Mais OP n'a pas demandé si elle était utile à certaines fins, ils ont demandé si cette méthode était un "RNG parfait". Bien qu'ils n'aient pas précisé ce qu'ils entendent par «parfait», le fait qu'il ne soit pas adapté à l'une des principales utilisations des GNR semble très pertinent pour répondre à cette question.
Geoffrey Brent

7

( mis à jour après que de nombreuses personnes ont souligné que le générateur de nombres aléatoires n'est pas la même chose qu'une seule séquence normale)

Si vous demandez si vous pouvez obtenir une séquence normale de π (c'est-à-dire que tous les nombres apparaissent uniformément), alors il y a plusieurs réponses sur mathoverflow. Par exemple, la réponse sur la distribution des chiffres de Pi dit:

... on pense que π est un nombre normal (~ distribution uniforme de chaque séquence de chiffres).

Pour les données de distribution des chiffres, voir par exemple http://www.eveandersson.com/pi/precalculated-frequencies ou https://thestarman.pcministry.com/math/pi/RandPI.html (1000 premiers chiffres):

entrez la description de l'image ici

Chez mathoverflow, il y a aussi de belles réponses à:


3
Si vous pensez que la question est en double, alors pourquoi y répondez-vous? Vous devez simplement le signaler, pas renforcer le comportement de publication indésirable.
dkaeae

8
@dkaeae Il n'y a pas de support pour les doublons de questions sur d'autres sites. De plus, la même question sur différents sites peut obtenir des réponses différentes. Dans ce cas, un site tel que Mathematics pourrait ne pas accorder beaucoup d'attention aux problèmes de sécurité. Voir aussi cette réponse . Notez que nous déconseillons de poser la même question sur plusieurs sites en même temps, car cela a tendance à entraîner des efforts inutiles. Mais la même question posée par différentes personnes à différents moments sur différents sites est généralement correcte.
Lézard discret

6
Malheureusement, ce n'est pas parce qu'un nombre est normal que la sortie de ses chiffres vous donne un bon RNG. Les sorties d'un tel RNG sont encore entièrement prévisibles. Que cela soit acceptable peut dépendre de l'application. Donc, je ne pense pas que ce soit aussi simple que de dire "pi est normal, affaire close".
DW

2
Ce n'est qu'une observation emperique pour les premiers chiffres? Que faut-il entendre par là?
vaisseau de maréchal

1
@DW J'ai mentionné que j'avais l'intention d'utiliser une combinaison de nombres comme π et e. Et s'il vous plaît, dites comment la sortie sera prévisible si nous ne savons pas jusqu'où est descendu le générateur?
Abhradeep Sarkar

1

En général, cette approche ne fonctionne pas: "aléatoire" ne signifie pas que vous obtenez beaucoup de chiffres différents, mais il y a aussi d'autres aspects. Par exemple, un test classique consiste à voir si toutes les combinaisons à deux ou trois chiffres, etc. se produisent avec la même fréquence. Ce serait un test très simple, qui peut exclure des résultats non aléatoires évidents, mais est encore beaucoup trop simpliste pour vérifier un comportement vraiment aléatoire.

Voir la page Wikipedia sur les tests de hasard comme une collection de liens vers des sources principales à ce sujet. Ils mentionnent une bonne quantité de concepts à consonance assez compliquée; il n'est pas si important d'entrer dans les détails à ce sujet - mais il est clair qu'il n'est pas intuitivement possible de déclarer un numéro spécifique comme une bonne source pour de tels chiffres.

Sur une note positive: pour un numéro irrationnel spécifique, vous êtes bien sûr libre de simplement l'essayer; c'est-à-dire, calculer le nombre à un degré suffisamment élevé de chiffres, et l'exécuter à travers tous les tests connus (il existe des outils pour cela, voir le lien ci-dessus). Si la mesure est assez bonne pour votre cas d'utilisation, et si vous êtes conscient que cela est évidemment inutile pour les applications cryptographiques, et obtenez toujours les mêmes chiffres si vous recommencez, et que la qualité peut se dégrader si vous dépassez ce que vous navez choisi pour tester le caractère aléatoire, vous pouvez utiliser ces chiffres. Mais il vaudra beaucoup mieux utiliser un générateur de nombres (pseudo-) aléatoires dédié; et rien ne vaut une bonne source physique de hasard.


4
πe

3
La réponse d'Ayrat renvoie à d'autres sites où les mathématiciens ont effectué ces tests. Ils croient, mais n'ont pas prouvé, que π satisfait aux tests statistiques.
Barmar

Oui, c'est ce que je voulais dire avec mon dernier paragraphe - l'essayer empiriquement en vaut la peine; mais rigoureusement, il n'a pas été prouvé (ou ne peut tout simplement pas être supposé être vrai) pour des irrationnels "d'apparence compliquée" arbitraires. @DavidRicherby, @ Barmar
AnoE

1

Il fournit un bon nombre aléatoire jusqu'à ce que vous réalisiez comment il a été produit, comme avec de nombreux nombres pseudo-aléatoires. Les nombres irrationnels (non algébriques et non transcendantaux) que vous avez choisis sont communs et donc plus faciles à deviner que les autres. Je ne vois aucun problème avec cette méthode à condition de choisir des générateurs moins courants.


4
Aucun problème sauf l'inefficacité flagrante, le fait que vous vous reposiez sur un adversaire ne sachant pas quel est votre algorithme, le fait qu'un mauvais choix de générateur pourrait conduire à une séquence très mauvaise, ...
David Richerby

4
2πe

Un nombre transcendantal est un nombre réel qui n'est pas algébrique. Il n'est pas possible qu'un nombre réel soit à la fois non algébrique et non transcendantal.
Brady Gilg
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.