Algorithme pour générer des nombres pseudo-aléatoire série, reproductible Omniscient graine initiale

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

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?

Était-ce utile?

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.

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