Случайность в Jython

alt text

8
задан kzh 23 July 2009 в 18:10
поделиться

2 ответа

Версия Python намного быстрее в простом тесте на моем Mac:

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

1000000 циклов, лучшее из 3: 0,266 мксек на цикл

против

 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.

9
ответ дан 5 December 2019 в 13:00
поделиться

Класс Java Random использует (и действительно должен использовать согласно спецификациям Java) линейный конгруэнтный алгоритм, в то время как Python использует Mersenne Twister. Мерсенн гарантирует чрезвычайно высокое качество (хотя и не криптографическое качество!) Случайных чисел и смехотворно длинный период (53-битные числа с плавающей точкой, период 2 ** 19937-1); линейные конгруэнтные генераторы имеют хорошо известные проблемы . Если вы не заботитесь о качестве случайных чисел, а заботитесь только о скорости, LCG, скорее всего, будет быстрее именно потому, что он менее сложен.

4
ответ дан 5 December 2019 в 13:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: