2009-05-03 12 views

Antwort

17

"Verwenden Sie die Quelle, Luke!" ... ;-). Studieren http://svn.python.org/view/python/trunk/Lib/random.py?revision=68378&view=markup wird Sie schnell beruhigen ;-).

Was passiert, wenn Samen nicht gesetzt ist (das ist der "i ist None" Fall):

if a is None: 
    try: 
     a = long(_hexlify(_urandom(16)), 16) 
    except NotImplementedError: 
     import time 
     a = long(time.time() * 256) # use fractional seconds 

und die expovariate:

random = self.random 
u = random() 
while u <= 1e-7: 
    u = random() 
return -_log(u)/lambd 

offensichtlich die gleiche zugrunde liegende Zufallsgenerator wie jeder nutzt andere Methode, und so wird durch die Aussaat oder deren Fehlen identisch beeinflusst (wirklich, wie sonst wäre es getan worden?)

+0

der Link ist tot :( –

6

a) Es verwendet in der Regel die Systemuhr, die Uhr auf einigen Systemen kann nur ms Genauigkeit haben und so zweimal sehr schnell zu säen kann den gleichen Wert ergeben.

Samen (self, a = None) Initialisiere internen Zustand von hashable Objekt.

None or no argument seeds from current time or from an operating 
system specific randomness source if available. 

http://pydoc.org/2.5.1/random.html#Random-seed

b) Ich könnte mir vorstellen expovariate tut, aber ich kann keinen Beweis finden. Es wäre albern, wenn es nicht wäre.

2

aktuelle Systemzeit wird verwendet; Die aktuelle Systemzeit wird auch zum Initialisieren des Generators verwendet, wenn das Modul zum ersten Mal importiert wird. Wenn Zufälligkeitsquellen vom Betriebssystem bereitgestellt werden, werden sie anstelle der Systemzeit verwendet (Einzelheiten zur Verfügbarkeit finden Sie in der Funktion os.urandom()).

Random Docs

Verwandte Themen