在Jython中使用(伪)随机数时,使用Python随机模块或Java的随机类会更有效吗?
答案 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可能更快,因为它不太复杂。