Я делаю некоторые моделирования уравнения Ланжевена для различных внешних сил. Мне сказали, что C's rand()
from stdlib.h
может внести в мои результаты смещение, я использую Twister Mersenne.
Тем не менее, я хотел бы знать (и посмотреть), какие именно ошибки линейный конгруэнтный генератор может внести в мое моделирование. Это то, что я пробовал:
- Генерация трехмерных кортежей случайностей, чтобы попытаться увидеть гиперплоскости. Я ничего не вижу.
- Делаем БПФ из большого вектора случайных чисел. Это почти одинаково и для Mersenne Twister, и для
rand()
. - Проверка принципа равенства для частицы в броуновском движении. Оба интеграторы согласны в ожидаемой стоимости с таким же количеством значащих цифр.
- Видя, как хорошо они складывают в несколько корзин, это не степень два. Оба дают одинаковые качественные результаты, никто не бывает лучше.
- Глядя на броуновских путях , чтобы увидеть явные расхождения с . Опять не повезло.
- Распределение точек по кругу. Заполнено и только по периметру. Между всеми ними и между ближайшими соседями (ответ Шора ниже в комментариях). Доступный в этом списке , просто запустите его с Julia 0.5.0 после установки необходимых библиотек (см. Инструкции в этом разделе).
Я хотел бы подчеркнуть, что я ищу внесенный уклон в контексте физического моделирования. Например, я видел, как с rand()
треском проваливаются тесты жестких дисков, в то время как тестер Мерсенна нет, но на данный момент это не так много значит для меня.
Есть ли у вас физические конкретные примеры того, как плохой генератор случайных чисел разрушает симуляцию Монте-Карло?
Примечание: я видел, как PRNG RANDU
может быть ужасным. Меня интересуют неочевидные примеры генераторов, которые выглядят невинно, но в конечном итоге вносят предвзятость.