Je suis un peu confus sur ce que random.seed()
fait Python. Par exemple, pourquoi les essais ci-dessous font-ils ce qu'ils font (systématiquement)?
>>> import random
>>> random.seed(9001)
>>> random.randint(1, 10)
1
>>> random.randint(1, 10)
3
>>> random.randint(1, 10)
6
>>> random.randint(1, 10)
6
>>> random.randint(1, 10)
7
Je n'ai pas trouvé de bonne documentation à ce sujet.
python
random
random-seed
Ahaan S. Rungta
la source
la source
random.seed
. En général, vous appelez simplementrandom.seed()
et il utilise l'heure actuelle comme valeur de départ, ce qui signifie que chaque fois que vous exécutez le script, vous obtiendrez une séquence de valeurs différente.Réponses:
Les générateurs de nombres pseudo-aléatoires fonctionnent en effectuant une opération sur une valeur. Généralement, cette valeur est le numéro précédent généré par le générateur. Cependant, la première fois que vous utilisez le générateur, il n'y a pas de valeur précédente.
L'amorçage d'un générateur de nombres pseudo-aléatoires lui donne sa première valeur "précédente". Chaque valeur de départ correspondra à une séquence de valeurs générées pour un générateur de nombres aléatoires donné. Autrement dit, si vous fournissez deux fois la même graine, vous obtenez la même séquence de nombres deux fois.
Généralement, vous voulez amorcer votre générateur de nombres aléatoires avec une valeur qui changera chaque exécution du programme. Par exemple, l'heure actuelle est une graine fréquemment utilisée. La raison pour laquelle cela ne se produit pas automatiquement est que si vous le souhaitez, vous pouvez fournir une graine spécifique pour obtenir une séquence connue de nombres.
la source
Toutes les autres réponses ne semblent pas expliquer l'utilisation de random.seed (). Voici un exemple simple ( source ):
la source
Vous essayez ceci.
Disons que 'random.seed' donne une valeur au générateur de valeurs aléatoires ('random.randint ()') qui génère ces valeurs sur la base de cette graine. L'une des propriétés essentielles des nombres aléatoires est qu'ils doivent être reproductibles. Lorsque vous mettez la même graine, vous obtenez le même modèle de nombres aléatoires. De cette façon, vous les générez dès le début. Vous donnez une graine différente - elle commence par une initiale différente (au-dessus de 3).
Étant donné une graine, il générera des nombres aléatoires entre 1 et 10 l'un après l'autre. Vous supposez donc un ensemble de nombres pour une valeur de départ.
la source
Un nombre aléatoire est généré par une opération sur la valeur précédente.
S'il n'y a pas de valeur précédente, l'heure actuelle est automatiquement la valeur précédente. Nous pouvons fournir cette valeur précédente par nous-mêmes en utilisant
random.seed(x)
oùx
pourrait être n'importe quel nombre ou chaîne, etc.Ce
random.random()
n'est donc pas réellement un nombre aléatoire parfait, il pourrait être prédit viarandom.seed(x)
.Par conséquent, générer un nombre aléatoire n'est pas réellement aléatoire, car il fonctionne sur des algorithmes. Les algorithmes donnent toujours la même sortie basée sur la même entrée. Cela signifie que cela dépend de la valeur de la graine. Ainsi, afin de le rendre plus aléatoire, le temps est automatiquement attribué
seed()
.la source
la source
Exécutez le programme ci-dessus plusieurs fois ...
1ère tentative: imprime 5 entiers aléatoires compris entre 1 et 100
2ème tentative: imprime les 5 mêmes nombres aléatoires apparus dans l'exécution ci-dessus.
3e tentative: même
.....Bientôt
Explication: Chaque fois que nous exécutons le programme ci-dessus, nous définissons la valeur de départ sur 10, puis le générateur aléatoire le prend comme variable de référence. Et puis en faisant une formule prédéfinie, il génère un nombre aléatoire.
Par conséquent, régler la valeur de départ à 10 lors de l'exécution suivante définit à nouveau le numéro de référence sur 10 et le même comportement commence à nouveau ...
Dès que nous réinitialisons la valeur de la graine, cela donne les mêmes plantes.
Remarque: modifiez la valeur de départ et exécutez le programme, vous verrez une séquence aléatoire différente de la précédente.
la source
Dans ce cas, aléatoire est en fait pseudo-aléatoire. Étant donné une graine, il générera des nombres avec une distribution égale. Mais avec la même graine, il générera la même séquence de nombres à chaque fois. Si vous voulez que cela change, vous devrez changer votre semence. Beaucoup de gens aiment générer une graine basée sur l'heure actuelle ou quelque chose comme ça.
la source
Imho, il est utilisé pour générer le même résultat de cours aléatoire lorsque vous utilisez à
random.seed(samedigit)
nouveau.la source
Définissez le
seed(x)
avant de générer un ensemble de nombres aléatoires et utilisez la même graine pour générer le même ensemble de nombres aléatoires. Utile en cas de reproduction des problèmes.la source
Voici ma compréhension. Chaque fois que nous définissons une valeur de départ, une "étiquette" ou une "référence" est générée. Le prochain appel random.function est attaché à cette "étiquette", donc la prochaine fois que vous appellerez la même valeur de départ et random.function, cela vous donnera le même résultat.
la source
Voici un petit test qui démontre que nourrir la
seed()
méthode avec le même argument provoquera le même résultat pseudo-aléatoire:la source
len(set(l))<=1
random.seed(a, version)
en python est utilisé pour initialiser le générateur de nombres pseudo-aléatoires (PRNG) .PRNG est un algorithme qui génère une séquence de nombres approximant les propriétés de nombres aléatoires. Ces nombres aléatoires peuvent être reproduits en utilisant la valeur de départ . Ainsi, si vous fournissez une valeur de départ, PRNG démarre à partir d'un état de départ arbitraire en utilisant une valeur de départ.
L'argument
a
est la valeur de départ. Si la valeur a estNone
, alors par défaut, l'heure système actuelle est utilisée.et
version
est un entier spécifiant comment convertir le paramètre a en un entier. La valeur par défaut est 2.Si vous voulez que le même nombre aléatoire à reproduire ensuite fournir la même graine à nouveau
Si vous ne fournissez pas la graine, cela génère un nombre différent et non 1 comme avant
Si vous fournissez une graine différente de celle d'avant , cela vous donnera un nombre aléatoire différent
Donc, en résumé, si vous voulez que le même nombre aléatoire soit reproduit, fournissez la graine. Plus précisément, la même graine .
la source