Algorithme pour générer des nombres pseudo-aléatoire série, reproductible Omniscient graine initiale
Question
j'écrire un algorithme léger pour générer des séries de numéros infinite pseudo-aléatoire, et dépend fortement de la semence initiale.
En python il devrait être comme
seed = 3345 // Common number
generator = numgen(seed)
while True:
generator.getNext() // With the same seed it produce same numbers
Comme je l'ai écrit, avec la même graine, il doit produire la même série de numéros, même dans des machines différentes et à des époques différentes. Y at-il un patten standard pour ceci ou dois-je mettre en œuvre mon propre algorithme?
La solution
Avec les exigences données, vous pouvez aller pour la série constante
generator = itertools.repeat(seed)
est
- léger
- pas forcément aléatoire
- dépend fortement de la semence initiale
- produit la même série, même sur une autre machine
Modifier : Pour en faire une réponse réelle, voici comment utiliser Mersenne Python Twister pour générer une série de nombres aléatoires:
seed = 3345
maximum = 1000000
generator = random.Random(seed)
while True:
print generator.random(maximum)
Créer vos propres assure l'instance de random.Random
qu'aucun appel au générateur de nombres aléatoires d'ailleurs interférer avec votre état aléatoire.