2009-03-06 6 views
0

N'est-il pas possible de construire un PRNG de cette manière? Pourquoi n'est-ce pas fait?Générateur de nombres pseudo-aléatoires à partir d'un nombre normal calculable

C'est, pour autant que je sais que nous pourrions tout simplement avoir une PRNG qui prend une graine n. Lorsque vous demandez un bit aléatoire, il prend le nième chiffre de l'expansion binaire du nombre normal calculable, et incrémente n.

Ma première pensée était que peut-être nous n'avions pas trouvé un nombre normal calculable, mais nous have. La pensée restante est qu'il y a une bonne raison de ne pas - soit il y a une propriété de PRNGs que je ne connais pas qu'une telle méthode n'aurait pas, ou ce serait impraticable d'une façon ou d'une autre, ou est dépassée par d'autres méthodes.

+0

Jetez un oeil à cet article: http://www.emis.de/journals/EM/expmath/volumes/11/11.4/pp527_546.pdf – dirkgently

+0

ce qui est un PSRG? voulez-vous dire PRNG? – hop

+0

oui, oui je le fais. Je ne sais pas comment j'ai mélangé celui-là, mais je l'ai fait. Je regarderai le journal dans quelques heures ... Je dois partir. –

Répondre

3

Cela rendrait la prédiction de la sortie très simple.

Disons, par exemple, vous créez le 0x54a30b7f entier. Si vous avez 4GiB de pi (ou un bruit aléatoire ou un nombre normal réel), il y a de fortes chances qu'il y ait une (ou peut-être une poignée) occurrence de cet entier particulier et je peux prédire avec une probabilité raisonnablement élevée tous les nombres futurs. C'est un problème sérieux dans le cas de PRNG cryptographiquement forts. Si au lieu d'un simple balayage séquentiel vous utilisez une fonction quelconque, je dois juste suivre la fonction qui, si elle est assez difficile à suivre, se transforme en une PRNG à part entière.

Si vous n'êtes pas préoccupé par la force cryptographique de votre générateur, alors il y a beaucoup plus de façons compact générer des nombres aléatoires. Mersenne Twister, par exemple, a une période beaucoup plus grande sans nécessiter une table de recherche 4GiB.

+0

Tout d'abord, pi (avec la plupart des autres constantes telles que sqrt (2) et e) n'a pas été prouvé pour être normal. En second lieu, il est calculable, et plus important encore, on peut calculer le nième chiffre de pi sans calculer n-1, ce qui rend une table de recherche inutile. En dira plus dans un nouveau commentaire. –

+0

Désolé, taille limite de publication. En second lieu, la chose avec un nombre normal est que n'importe quel nombre se produira un nombre infini de fois dans l'expansion. En outre, il sera aussi probable que n'importe quel autre nombre. Donc, étant donné la plage complète ou arbitrairement large d'un nombre normal, il n'est pas possible de deviner. –

+0

... Mais alors votre graine devrait être plus grande que 32 bits (sinon vous n'utilisez que le premier 4GiB) et la génération de la graine devrait être suffisamment sûre pour que je ne puisse pas simplement attaquer ça. –

Questions connexes