Ce qui est suggéré valeur de départ pour l'utilisation avec de l'aléatoire.de la graine()?
Question assez Simple:
Je suis à l'aide de python module random pour générer des nombres entiers. Je veux savoir quelle est la valeur proposée pour une utilisation avec l'aléatoire.de la graine() la fonction? Actuellement, je suis laisser cette valeur par défaut à l'heure actuelle, mais ce n'est pas l'idéal. Il semble comme un littéral de chaîne constante (semblable à un mot de passe) ne serait pas idéal/strong
Suggestions?
Grâce,
-aj
Mise à JOUR:
La raison pour laquelle je suis de la génération aléatoire d'entiers est pour la génération de données de test. Les chiffres ne doivent pas être reproduit.
Avoir une codé en dur de semences n'est pas nécessairement une mauvaise chose. De quoi avez-vous besoin d'une graine? Que fait votre code? Avez-vous besoin des résultats, ou de n'importe quel rendom numéros? Veuillez préciser votre question.
Mise à jour de question.
qu'entendez-vous par "pas idéal"?
Mon test de générateur de valeur doit produire des entiers aléatoires pour les différents domaines. La différence de temps est si petit entre les appels de random.de la graine(); aléatoire.randint(a,b) que le premier 'n' chiffres sont toujours les mêmes pour les différents nombres entiers. Par exemple: aléatoire.de la graine(); aléatoire.randint(0000,9999) renvoie 6574 aléatoire.de la graine(); aléatoire.randint(100000,999999) renvoie 657448 Les 4 premiers chiffres sont les mêmes (et je ne veux pas qu'ils soient)...
Pourquoi êtes-vous le réensemencement? Vous n'avez pas à réamorcer entre chaque nombre aléatoire, et en fait, vous ne devriez pas l'être. Lorsque vous importez des
Mise à jour de question.
qu'entendez-vous par "pas idéal"?
Mon test de générateur de valeur doit produire des entiers aléatoires pour les différents domaines. La différence de temps est si petit entre les appels de random.de la graine(); aléatoire.randint(a,b) que le premier 'n' chiffres sont toujours les mêmes pour les différents nombres entiers. Par exemple: aléatoire.de la graine(); aléatoire.randint(0000,9999) renvoie 6574 aléatoire.de la graine(); aléatoire.randint(100000,999999) renvoie 657448 Les 4 premiers chiffres sont les mêmes (et je ne veux pas qu'ils soient)...
Pourquoi êtes-vous le réensemencement? Vous n'avez pas à réamorcer entre chaque nombre aléatoire, et en fait, vous ne devriez pas l'être. Lorsque vous importez des
random
, c'est ensemencé pour vous, ne vous inquiétez pas sur les graines, et que vous serez heureux avec les résultats (votre anecdote ici est un coup de chance, par la manière, et je ne peux pas le reproduire).OriginalL'auteur AJ. | 2009-11-09
Vous devez vous connecter pour publier un commentaire.
Selon la documentation de
aléatoire.semences
:Si vous n'avez pas passer quelque chose à la postérité, il va essayer d'utiliser de système d'exploitation fourni caractère aléatoire des sources au lieu de l'heure, ce qui est toujours un meilleur pari. Cela vous permet d'économiser un peu de travail, et est à peu près aussi bon qu'il va recevoir. Concernant la disponibilité, les docs pour
os.urandom
nous dire:De la croix-plate-forme aléatoire graines sont la grande victoire ici; vous pouvez omettre une graine et de la confiance qu'il sera suffisamment aléatoire sur presque toutes les plateformes que vous allez utiliser Python. Même si Python tombe en arrière, à l'époque, il n'y a probablement qu'un millième de seconde fenêtre (ou moins) pour deviner la graine. Je ne pense pas que vous allez rencontrer des problèmes en l'utilisant à l'heure actuelle de toute façon-et même alors, c'est seulement une solution de repli.
Toujours utiliser urandom: sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers
OriginalL'auteur Jed Smith
Pour la plupart des cas en utilisant l'heure actuelle est assez bon. Parfois, vous devez utiliser un nombre fixe de générer des pseudo-aléatoire de nombres à des fins de comparaison.
utilisé une graine pour l'expansion de l'univers 😉
OriginalL'auteur grokus
Réglage de la graine est pour la répétabilité, pas de sécurité. Si quoi que ce soit, vous rendre le système moins sécurisé par avoir fixé la graine que celui qui est en constante évolution.
OriginalL'auteur Mike Graham
Peut-être qu'il n'est pas un problème dans votre cas, mais ont problème de l'utilisation de l'heure du système, comme la semence, c'est que quelqu'un qui sait à peu près quand votre système peut être en mesure de deviner votre graine (en essai) après avoir vu quelques chiffres de la séquence.
par exemple, n'utilisez pas de système de temps que la graine pour votre jeu de poker en ligne
OriginalL'auteur John La Rooy
Si vous êtes à l'aide de random pour générer des données de test, je voudrais suggérer que la reproductibilité peut être important.
Il suffit de penser à un cas d'utilisation: pour le jeu de données X, vous obtenez certains comportements étranges (par exemple bloquer). S'avère que l'ensemble de données X montre une certaine fonction qui n'était pas si évident les autres ensembles de données, Y et Z, et découvre un bug qui avait escapend vos suites de tests. Maintenant, sachant que la graine est utile de sorte que vous pouvez précisément de reproduire le bug, et vous pouvez le fixer.
OriginalL'auteur Francesco