Jython中的随机性

时间:2009-07-23 18:10:07

标签: java python random jython

在Jython中使用(伪)随机数时,使用Python随机模块或Java的随机类会更有效吗?

2 个答案:

答案 0 :(得分:9)

Python的版本在我的Mac上进行简单测试的速度要快得多:

jython -m timeit -s "import random" "random.random()"

1000000次循环,最佳3:每循环0.266次使用

VS

 jython -m timeit -s "import java.util.Random; random=java.util.Random()" "random.nextDouble()"

1000000次循环,最佳3:1.65每循环使用

Jython版本2.5b3和Java版本1.5.0_19。

答案 1 :(得分:4)

Java的Random类使用(实际上必须使用Java的规范)线性同余算法,而Python则使用Mersenne Twister。 Mersenne保证极高的质量(虽然不是加密质量!)随机数和一个可笑的长周期(53位精度浮点数,时期2 ** 19937-1);线性同余生成器具有众所周知的issues。如果你真的不关心随机数的质量,只关心速度,那么LCG可能更快,因为它不太复杂。