web-dev-qa-db-fra.com

définir une graine aléatoire au niveau du programme dans python

J'ai un programme assez gros, où j'utilise les fonctions du module random dans différents fichiers. J'aimerais pouvoir placer la graine au hasard une fois, à un endroit donné, pour que le programme retourne toujours les mêmes résultats. Cela peut-il même être réalisé dans python?

66
Mischa Obrecht

Le module principal python qui est exécuté doit _import random_ et appelle random.seed(n) - il est partagé entre toutes les autres importations de random à la condition d'un autre emplacement. ne réinitialise pas la graine.

96
Jon Clements

Le commentaire de zss doit être mis en évidence:

Une autre chose à laquelle les gens doivent faire attention: si vous utilisez numpy.random, vous devez utiliser numpy.random.seed () pour définir la graine. L'utilisation de random.seed () ne définira pas la valeur initiale des nombres aléatoires générés à partir de numpy.random. Cela m'a confondu pendant un moment. -zss

22
Sida Zhou

Au début de votre application, appelez random.seed(x) en vous assurant que x est toujours identique. Cela garantira que la séquence de nombres pseudo aléatoires sera la même à chaque exécution de l'application.

8
Chimera

Jon Clements répond à peu près à ma question. Cependant, ce n'était pas le vrai problème: il s'avère que le caractère aléatoire de mon code est dû au numpy.linalg SVD car il ne produit pas toujours les mêmes résultats pour les matrices mal conditionnées !!

Veillez donc à vérifier cela dans votre code, si vous rencontrez les mêmes problèmes!

2
Mischa Obrecht