Question

Dans une vue en django j'utilise random.random(). À quelle fréquence dois-je appeler random.seed()? Une fois pour toutes les demandes? Une fois pour chaque saison? Une fois alors que le serveur Web est en cours d'exécution?

Était-ce utile?

La solution

Appel random.seed() rarement le cas échéant.

Pour être aléatoire, vous devez autoriser le générateur de nombres aléatoires à courir sans toucher la graine. La séquence de nombres est ce qui est aléatoire. Si vous changez la graine, vous commencez une nouvelle séquence. Les valeurs de semences peuvent ne pas être très aléatoire, ce qui conduit à des problèmes.

Selon le nombre de chiffres que vous avez besoin, vous pouvez envisager de réinitialiser la graine de /dev/random périodiquement.

Vous devriez essayer de réinitialiser la graine juste avant que vous avez utilisé la graine précédente. Vous ne recevez pas les 32 bits de plein hasard, de sorte que vous pouvez réinitialiser la graine après la génération 2 ** 28 numéros.

Autres conseils

Ne réglez pas la graine.

Le seul moment où vous souhaitez définir la graine est si vous voulez vous assurer que les mêmes événements continuent de se produire. Par exemple, si vous ne voulez pas laisser les joueurs tricher dans votre jeu, vous pouvez enregistrer la graine, puis définissez quand ils chargent leur jeu. Alors, peu importe combien de fois ils économisent + reload, il donne toujours les mêmes résultats.

Cela dépend vraiment de ce que vous avez besoin du nombre aléatoire pour. Utilisez un peu d'expérimentation pour savoir si cela fait une différence. Vous devriez également considérer qu'il est en fait un modèle à des nombres pseudo-aléatoires. Est-il une différence pour vous si quelqu'un peut deviner possible le nombre aléatoire? Sinon, les graines une fois au début d'une session ou lorsque le serveur premier démarrage.

Ensemencement une fois au début de la session serait probablement le plus de sens, l'OMI. De cette façon, l'utilisateur recevra un ensemble de nombres pseudo-aléatoires tout au long de leur session. Si vous semez chaque fois qu'une page est servi, ils ne sont pas garantis cela.

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