Domanda

In una vista in Django Io uso random.random(). Quante volte devo chiamare random.seed()? Una volta per ogni richiesta? Un tempo per ogni stagione? Una volta, mentre il web server è in funzione?

È stato utile?

Soluzione

Chiamata random.seed() raramente se non del tutto.

Per essere casuale, è necessario consentire il generatore di numeri casuali per eseguire senza toccare il seme. La sequenza di numeri è ciò che è casuale. Se si cambia il seme, si inizia una nuova sequenza. I valori di inizializzazione potrebbero non essere molto casuale, portando a problemi.

A seconda di quanti numeri si ha bisogno, si può considerare il reset il seme da /dev/random periodicamente.

Si dovrebbe cercare di ripristinare il seme appena prima che hai utilizzato il seme precedente. Non si ottiene il pieno 32 bit di casualità, così si potrebbe desiderare di reimpostare il seme dopo aver generato 2 ** 28 numeri.

Altri suggerimenti

Non impostare il seme.

L'unica volta che si desidera impostare il seme è che se si vuole fare in modo che gli stessi eventi continuano a succedere. Ad esempio, se non si vuole permettere ai giocatori di barare nel gioco è possibile salvare il seme, e quindi impostare quando caricano il loro gioco. Poi non importa quante volte fanno risparmiare + ricarica, dà ancora gli stessi risultati.

In realtà dipende quello che ti serve il numero casuale per. Utilizzare alcuni esperimenti per scoprire se fa alcuna differenza. Si dovrebbe anche considerare che v'è in realtà un modello di numeri pseudo-casuali. Fa la differenza per voi se qualcuno può possibile indovinare il numero casuale successivo? In caso contrario, il seme una volta all'inizio di una sessione o quando il server prima si avvia.

La semina una volta all'inizio della sessione, farebbero probabilmente più senso, IMO. In questo modo l'utente riceverà un insieme di numeri pseudo-casuali per tutta la loro sessione. Se nuovi semi ogni volta che una pagina è servito, non sono garantiti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top