2015-01-15 19 views
5

sto usando hash di stringhe per la semina stati casuali nel modo seguente:hashing deterministico in Python 3

context = "string" 
seed = hash(context) % 4294967295 # This is necessary to keep the hash within allowed seed values 
np.random.seed(seed) 

Questo è purtroppo (per il mio uso) non deterministica tra le esecuzioni in Python 3.3 e superiori. So che potrei impostare la variabile di ambiente PYTHONHASHSEED su un valore intero per riguadagnare il determinismo, ma probabilmente preferirei qualcosa che si sente un po 'meno hacky, e non ignorerò del tutto la sicurezza aggiuntiva aggiunta dall'hash casuale. Suggerimenti?

risposta

5

Utilizzare una funzione hash specifica. zlib.adler32() è una scelta eccellente; in alternativa, controlla il modulo hashlib per ulteriori opzioni.

+0

Perfetto, grazie! –