Tous les générateurs de nombres pseudo-aléatoires sont-ils finalement périodiques? Ou sont-ils finalement périodiques?
Par périodique, je veux dire que, comme les nombres rationnels, ils génèrent finalement une sous-séquence périodique ...
Et pseudo-aléatoire signifie génération algorithmique / mathématique de nombres aléatoires ...
randomness
pseudo-random-generators
user13675
la source
la source
Réponses:
Tous les générateurs pseudo-aléatoires qui ne s'appuient pas sur le hasard extérieur et utilisent une quantité limitée de mémoire sont nécessairement ultimes périodiques car ils ont un état fini. Vous pouvez les considérer comme d'énormes automates finis déterministes qui ont des états de "sortie" spéciaux dans lesquels ils donnent leur sortie. Tous les automates finis sont finalement périodiques, et donc tous les générateurs pseudo-aléatoires produisent éventuellement une sortie périodique.
Cependant, la durée de la période peut être énorme. Par exemple, un PRNG avec un état cryptographique de 128 bits peut ne tourner qu'une fois tous les bits de sortie, et donc même s'il émet un bit toutes les nanosecondes, le système solaire sera mort avant que le PRNG ne se répète.2128
Si le PRNG est autorisé à utiliser une quantité illimitée de mémoire (ce qui n'est pas réaliste), il peut, par exemple, produire l'expansion binaire de , qui, nous le savons, n'est pas finalement périodique (puisque est irrationnel).2-√ 2-√
la source
Les PRNG sont des machines à états. S'ils sont basés uniquement sur des entrées internes (contrairement à Poker Stars RNG qui est une combinaison de matériel et de logiciels, se semant en continu à partir ... d'échantillons sonores), vous obtiendrez (C, S1, ...) où C est la valeur actuelle (ou précédente) et S1, ... pourrait être un ensemble d'états:
S'il existe des valeurs N possibles (puisque la mémoire est limitée) de C et que vous répétez N + 1 fois, vous atteindrez la même valeur pour C au moins deux fois. Si vous répétez 2N + 1 fois, vous atteindrez la même valeur pour C au moins 3 fois.
Soit T = (Ct, S1t, S2t) un certain état (valeur courante et autres états).
Soit M = # {valeurs pour S1} X {valeurs pour S2} X {...} le cardinal des combinaisons d'états possibles (là encore: puisque la mémoire est bornée).
Si vous itérez NM + 1 fois l'algorithme, vous atteindrez au moins deux fois le même état (Ct, S1t, S2t, ...), générant ainsi la même valeur de sortie et la même séquence d'état suivante que la première fois, et devenant ainsi périodique.
la source
Exemple simple de séquence pseudo-aléatoire non périodique: concaténer ensemble les représentations binaires de tous les entiers positifs, dans l'ordre:
(Ajoutez un "." Et cela s'appelle la constante binaire de Champernowne .)
Bien sûr, ce n'est pas de très haute qualité en ce qui concerne les séquences pseudo-aléatoires, mais cela démontre que c'est possible sans utiliser beaucoup de mémoire.
L'exigence de mémoire illimitée n'est pas un problème pour une machine de turing, et ce n'est probablement pas un problème dans la pratique non plus, car la croissance est si lente, mais cela dépend de la raison pour laquelle vous avez l'intention d'utiliser cette chose.
la source