Zufälligkeit in Jython

8

Wäre es bei der Verwendung von (Pseudo-) Zufallszahlen in Jython effizienter, das zufällige Python-Modul oder die zufällige Java-Klasse zu verwenden?

    
kzh 23.07.2009, 18:10
quelle

2 Antworten

9

Pythons Version ist viel schneller in einem einfachen Test auf meinem Mac:

%Vor%

1000000 Schleifen, das Beste aus 3: 0,266 usec pro Schleife

vs

%Vor%

1000000 Schleifen, das Beste aus 3: 1,65 usec pro Schleife

Jython-Version 2.5b3 und Java-Version 1.5.0_19.

    
Alexander Ljungberg 23.07.2009, 18:26
quelle
4

Die Java-Klasse Random verwendet einen linearen kongruenten Algorithmus (und muss dies auch mit den Spezifikationen von Java tun), während Python Mersenne Twister verwendet. Mersenne garantiert extrem hohe Qualität (obwohl nicht Qualität!) Zufallszahlen und eine lächerlich lange Zeit (53-Bit-Präzisionsschwimmer, Periode 2 ** 19937-1); Lineare Kongruenzgeneratoren haben bekannte Probleme . Wenn Ihnen die Qualität der Zufallszahlen nicht wirklich wichtig ist und Sie nur auf Geschwindigkeit achten, ist die LCG wahrscheinlich schneller, weil sie weniger anspruchsvoll ist.

    
Alex Martelli 23.07.2009 18:28
quelle

Tags und Links