-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


Генерация случайных чисел по нормальному закону распределения

Суббота, 09 Января 2021 г. 10:41 + в цитатник
mkudritsky:
Цитата Qraizer @
MS, к примеру, славится большой тягой к сохранению обратной совместимости

Думаю, что это самое правильное предположение!

Тем не менее, наверное, вопрос был поднят не зря.
Если кто-то будет создавать датчики псевдослучайных чисел на базе классической функции rand(), то должен отдавать себе отчет: в Windows этот датчик "16-битный" и для генерации чисел используются 15 бит (RAND_MAX=2**15-1).
В свое время меня, например, такая частота (0..32767) генерации псевдослучайных чисел для решения задачи не устроила - было невооруженным глазом видно, что последовательность чисел редкая.
(Кстати, я очень долго искал причину этого явления! Кучу времени потерял, пока понял что к чему).

Так что есть два выхода из положения в OS Windows:
1. Использовать C++ и класс .
2. При помощи приведенных мною выше программ (или аналогов) генерировать псевдослучайные числа в два обращения к функции rand() - получится 30-битный датчик псевдослучайных чисел.

В OS Linux классический датчик псевдослучайных числел 31-битный (RAND_MAX=2**31-1).
Кстати, если не устраивает и 30/31-битный датчик, то по аналогии с приведенными выше программами можно организовать 60/62-битные датчики соответственно с RAND_MAX=2**60-1(2**62-1).
Разумеется, работать надо с 64-битным целым типом данных long long int.
В OS Windows будет 4-кратное обращения к функции rand(), а в Linux - 2-кратное.

P.S. Был немного удивлен, что в 64-разрядных ОС Linux датчик rand() по-прежнему 31-битный, а не 63-битный. Наверное, не смогли найти достаточно большое простое число для этой цели. А может 31-битного датчика уже хватает на все мыслимые и немыслимые запросы.

https://forum.sources.ru/index.php?showtopic=420883&view=findpost&p=3843458

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку