J'ai un programme assez important, dans lequel j'utilise des fonctions de l'application random
dans différents fichiers. J'aimerais pouvoir définir la graine aléatoire une fois, à un seul endroit, pour que le programme renvoie toujours les mêmes résultats. Cela peut-il être réalisé dans python
?
Réponses
Trop de publicités?zss Le commentaire de l'auteur devrait être souligné comme une réponse réelle :
Une autre chose à laquelle les gens doivent faire attention : si vous utilisez
numpy.random
alors vous devez utilisernumpy.random.seed()
pour définir le semences. Utilisation derandom.seed()
ne définira pas la graine pour les nombres aléatoires générés à partir denumpy.random
. Cela m'a perturbé pendant un moment. -zss
Jon Clements répond à peu près à ma question. Cependant, ce n'était pas le vrai problème : Il s'avère, que la raison du caractère aléatoire de mon code était le SVD de numpy.linalg car il ne produit pas toujours les mêmes résultats pour les matrices mal conditionnées ! !!
Assurez-vous donc de vérifier cela dans votre code, si vous avez les mêmes problèmes !
Dans le prolongement des réponses précédentes : soyez conscient que de nombreuses constructions peuvent faire diverger les chemins d'exécution, même lorsque toutes les graines sont contrôlées.
Je pensais " J'ai configuré mes graines de façon à ce qu'elles soient toujours les mêmes, et je n'ai pas de dépendances changeantes/externes, donc le chemin d'exécution de mon code devrait toujours être le même. ", mais c'est faux.
L'exemple qui m'a mordu est le suivant list(set(...))
où l'ordre résultant peut être différent.
- Réponses précédentes
- Plus de réponses