Уже 6 лет у меня на сайте есть страница с генератором случайных чисел . Долгое время это был первый или второй результат в Google для "генератора случайных чисел", и он использовался для принятия решений в десятках, если не сотнях конкурсов и рисунков на дискуссионных форумах и блогах (я знаю, потому что вижу рефереров в своих веб-журналы и обычно идут смотреть).
Сегодня кто-то написал мне, что это может быть не так случайно, как я думал. Она попыталась сгенерировать очень большие случайные числа (например, от 1 до 10000000000000000000) и обнаружила, что они почти всегда имеют одинаковое количество цифр. На самом деле, я заключил функцию в цикл, чтобы я мог генерировать тысячи чисел, и, конечно же, для очень больших чисел вариация составляла всего около 2 порядков.
Зачем?
Вот версия с циклом, поэтому вы можете попробовать ее сами:
http://andrew.hedges.name/experiments/random/randomness.html
Он включает в себя как простую реализацию, взятую из сети разработчиков Mozilla, так и некоторый код 1997 года, который я удалил с веб-страницы, которая больше не существует ("Central Randomizer 1.3" Пола Хоула). Просмотрите исходный код, чтобы узнать, как работает каждый метод.
Я читал здесь и в других местах о Mersenne Twister. Меня интересует, почему не было бы большего разброса в результатах встроенной функции JavaScript Math.random . Спасибо!