Seite 1 von 1
Random liefert Zufallszahlen auch ohne seed ?!?
Verfasst: Sonntag 26. August 2012, 16:29
von mintpc
Hallo zusammen,
die Funktion
sollte (dachte ich immer) mit
initialisiert werden (Systemzeit als Startwert), sonst liefert
sie keine Zufallswerte.
Hier:
bekomme ich jedoch bei jedem Ausführen auch andere Werte, ohne
seed()
müssten es doch dann immer dieselben sein.
Wozu ist denn dann
seed() überhaupt gut, bzw. wie kann ich zum Testen
meines Programms immer dieselben Zufallszahlen ausgeben lassen (wie es eigentlich
ohne
seed() sein sollte.
Danke schonmal
mintpc
Re: Random liefert Zufallszahlen auch ohne seed ?!?
Verfasst: Sonntag 26. August 2012, 16:42
von BlackJack
@mintpc: Ich weiss nicht wo Du die Idee her hast, dass `random` ohne expliziten `seed()`-Aufruf immer die selbe Folge von Zufallszahlen liefert, aber das tut es wie Du ja festgestellt hat *nicht*. Python ist nicht C.
Wenn Du immer die selbe Folge haben möchtest, *dann* kannst Du mit `seed()` plus Argument dafür sorgen, denn für den gleichen Startwert sollte immer die gleiche Folge kommen. Das gilt aber nur für eine konkrete Implementierung und Version verbindlich. Bei CPython hat sich die Implementierung zum Beispiel mindestens einmal in der Vergangenheit geändert. Wenn die Tests wirklich reproduzierbar sein sollen, müsste man für den Test dafür sorgen, dass tatsächlich immer die gleichen Werte verwendet werden.
Re: Random liefert Zufallszahlen auch ohne seed ?!?
Verfasst: Sonntag 26. August 2012, 18:08
von mintpc
Ah, verstanden. Hab's ausprobiert.
Ich dachte,
seed() entspräche dem randomize aus Delphi.
Wenn dem nicht so ist, kann ich ja
seed () auch weglassen.
Danke für die schnelle Antwort
mintpc
Re: Random liefert Zufallszahlen auch ohne seed ?!?
Verfasst: Sonntag 26. August 2012, 21:40
von EyDu
mintpc hat geschrieben:Ich dachte, seed() entspräche dem randomize aus Delphi.
Wenn dem nicht so ist, kann ich ja seed () auch weglassen.
Das seed entspricht auch dem randomize aus Delphi, es wird beim Importieren des Moduls aber immer automatisch aufgerufen. Du brauchst dich darum also nicht kümmern. Das steht aber auch so in der Doku.
random.seed hat geschrieben:Initialize the basic random number generator. Optional argument x can be any hashable object. If x is omitted or None, current system time is used; current system time is also used to initialize the generator when the module is first imported. If randomness sources are provided by the operating system, they are used instead of the system time (see the os.urandom() function for details on availability).
Re: Random liefert Zufallszahlen auch ohne seed ?!?
Verfasst: Montag 27. August 2012, 20:49
von mintpc
Ah ja! Nochmal danke!
Jetzt hab ich's tatsächlich verstanden.
mintpc