Unabhängige Instanzen von "zufällig"

8

Der folgende Code versucht zu veranschaulichen, was ich will. Ich möchte grundsätzlich zwei Instanzen von "zufällig", die unabhängig voneinander arbeiten. Ich möchte "random" innerhalb einer Klasse säen, ohne "zufällig" in einer anderen Klasse zu beeinflussen. Wie kann ich das tun?

%Vor%     
Lin 08.02.2010, 03:42
quelle

3 Antworten

17

Die Klasse random.Random existiert speziell, um das gewünschte Verhalten zu ermöglichen - Module sind intrinsisch Singletons, aber Klassen sind multipliziert instantiiert, so dass beide Arten von Bedürfnissen abgedeckt sind.

Sollten Sie jemals eine unabhängige Kopie eines Moduls benötigen (was Sie bei random definitiv nicht tun!), versuchen Sie es mit copy.deepcopy - in vielen Fällen wird es funktionieren. Der Bedarf ist jedoch sehr selten, da Module normalerweise keine globalen änderbaren Zustände behalten, außer indem sie eine privilegierte Instanz einer Klasse behalten, die sie auch für "externen Konsum" anbieten (andere Beispiele neben random include fileinput ).

    
Alex Martelli 08.02.2010, 03:51
quelle
5

Erstellen Sie für die gesetzten Zufallszahlen eine eigene Instanz von random.Random . Die random -Dokumentation erläutert diese Klasse, die das Modul von einer einzigen Instanz abhängig macht, wenn Sie die Funktionen direkt verwenden in ihm.

    
Mike Graham 08.02.2010 04:08
quelle
3

Traurigerweise kann das Vorhandensein von zwei unabhängigen RNGs weniger zufällig sein als die Verwendung eines einzelnen RNG, der einen "Offset" in die erzeugte Sequenz verwendet.

Wenn Sie einen "Offset" verwenden, müssen Sie beide vollständigen Sequenzen von Samples generieren und sie dann für Ihre Simulation verwenden. So etwas.

%Vor%

RNGs können nur für einen einzelnen Seed und eine einzelne Zahlenfolge wünschenswerte Zufälligkeitseigenschaften aufweisen. Da zwei parallele Sequenzen die gleichen Konstanten für den Multiplikator und den Modulus verwenden, besteht die Möglichkeit, dass sie eine nachweisbare Korrelation zueinander haben.

    
S.Lott 08.02.2010 13:14
quelle

Tags und Links