2014-12-03 20 views
16

W pytonie i zakładając, że jestem w systemie, który ma losowy generator nasion, w jaki sposób mogę uzyskać random.seed(), aby zamiast tego używać czasu systemowego? (Jakby/dev/urandom nie istnieje)Python: losowy czas systemowy seed

+0

Nie możesz użyć czegoś takiego jak 'random.seed (time.time()'? – fredtantini

+0

Czy Python automatycznie nie ma losowego seeda? Masz tylko dostarczyć ziarno, jeśli nie chcesz tego być przypadkowym, pomyślałem? – ArtOfWarfare

+0

Zaczyna się oczywiste pytanie: * dlaczego * starasz się umyślnie unikać wyższego nasienia na rzecz czasu systemowego ?, krzyczy "XY pytanie" do mnie –

Odpowiedz

21
import random 
from datetime import datetime 
random.seed(datetime.now()) 
10

można zrobić

import random 
import time 
random.seed(time.time()) 
+1

z tego linku: "Jeśli źródła losowości są dostarczane przez system operacyjny, są one używane zamiast czasu systemowego (zobacz os.urandom () w celu uzyskania szczegółowych informacji na temat dostępności). "Tego właśnie staram się ominąć: – Academiphile

+0

, więc nie rozumiem Twojego pytania, czego szukasz? – Elisha

+0

a czy szukasz "random.seed (time.time())"? – Elisha

0

Wiesz tej biblioteki: PyRandLib? Zobacz:

https://schmouk.github.io/PyRandLib/ to easily download archives versions, and 
https://github.com/schmouk/PyRandLib to get access to the code. 

Ta biblioteka zawiera wiele generatorów liczb pseudolosowych najlepsze w swojej klasie działając dokładnie tak samo jak Python „wbudowany” biblioteka losowych (tylko un-zip lub un-tar ściągnięty zarchiwizuj w podkatalogu "Lib/site-packages /" twojego katalogu Pythona).

Z kodu iz modułu fastrand32.py dostaniesz bardziej zaawansowany sposób losowania z przetasowaną wersją bieżącego czasu. Dla Państwa potrzeby, byłoby to stać:

import time 
import random 

t = int(time.time() * 1000.0) 
random.seed(((t & 0xff000000) >> 24) + 
      ((t & 0x00ff0000) >> 8) + 
      ((t & 0x0000ff00) << 8) + 
      ((t & 0x000000ff) << 24) ) 

Stanowi to główną zaletę: do bardzo krótkich okresach czasu, początkowe nasiona do karmienia generatora pseudolosowych będzie ogromnie różni się między dwoma kolejnymi połączeniami.

Powiązane problemy