В течение 6 лет у меня на моем сайте была страница
Вот петлевая версия, поэтому вы можете попробовать ее сами:
В течение 6 лет у меня на моем сайте была страница
Вот петлевая версия, поэтому вы можете попробовать ее сами:
Указанные числа между 1 и 100.
Приведенные числа от 1 до 1000.
и т.д.
Итак, если вы выбираете случайным образом, то подавляющее большинство выбранных чисел будет иметь одинаковое количество цифр, потому что подавляющее большинство возможных значений имеют одинаковое количество цифр.
Ожидаются ваши результаты. Если случайные числа равномерно распределены в диапазоне от 1 до 10 ^ n, то вы ожидаете, что около 9/10 чисел будут иметь n цифр, а еще 9/100 - n-1.
Существуют разные типы случайности. Math.random дает вам равномерное распределение чисел.
Если вы хотите разные порядки, я бы предложил использовать экспоненциальную функцию для создания того, что называется распределение законности закона:
public void powerlaw(int minimum, int maxmimum) {
random_number = Math.floor(Math.exp(Math.random()*Math.log(maxmimum-minimum+1)))+minimum
return random_number
}
Эта строка должна содержать примерно одно число из 1-значного числа в виде 2-значных чисел и трехзначных чисел.
Существуют также другие распределения для случайных чисел, таких как нормальное распределение (также называемое гауссовским распределением).
В следующем документе объясняется, как math.random() в основных веб-браузерах (un) безопасно: " Временное отслеживание пользователей в основных браузерах и кросс-доменная информация утечка и атаки "Амида Клейна (Amid Klein, 2008). Это не более сильное, чем обычные встроенные функции PRNG Java или Windows.
С другой стороны, для реализации SFMT периода 2 ^ 19937-1 требуется 2496 байт внутреннего состояния, поддерживаемого для каждой последовательности PRNG. Некоторые люди могут считать это непростительной ценой.
Выглядит совершенно случайно для меня! (Подсказка: он зависит от браузера.)
Лично я считаю, что моя реализация была бы лучше, хотя я украл ее из XKCD, который ВСЕГДА должен быть подтвержден:
random = 4; // Chosen by a fair dice throw. Guaranteed to be random.
Если вы используете число, например 10000000000000000000, вы выходите за пределы точности типа данных, используемого Javascript. Обратите внимание, что все порожденные числа заканчиваются на "00".
Я попробовал генератор псевдослучайных чисел JS на Chaos Game.
Мой Треугольник Sierpiński говорит о его довольно случайном:
Хорошо, если вы генерируете числа до, скажем, 1e6, вы, надеюсь, получите все числа с приблизительно равной вероятностью. Это также означает, что у вас есть только одна десятая вероятность получить число с одной цифрой меньше. Один из сотен шансов получить две цифры меньше и т.д. Я сомневаюсь, что вы увидите большую разницу при использовании другого RNG, потому что у вас есть равномерное распределение по номерам, а не их логарифм.