Почему генератор случайных чисел rand_r () считается слабым? - PullRequest
0 голосов
/ 17 января 2020

Страница man для rand_r() сообщает:

Значение, на которое указывает аргумент seedp функции rand_r (), предоставляет только очень небольшое количество состояний, поэтому эта функция будет слабой псевдо -лучайный генератор.

Может ли кто-нибудь объяснить, что означает это предложение? Как получается, что начальное значение «обеспечивает только очень небольшое количество состояния», и как это ослабляет генератор?

Прежде чем я начну использовать расширение GNU drand48_r() в качестве лучшей альтернативы, я хочу будь уверен, что я делаю осознанный выбор. Возможно, для некоторых вариантов использования достаточно rand_r(), иначе не было бы смысла в его доступности.

РЕДАКТИРОВАТЬ в ответ на комментарии:

I wi sh чтобы лучше понять функции и способ их объяснения, предпочтительно без ссылки на конкретный вариант использования, который может ограничить объяснение. На net обсуждается множество вариантов использования, но общие знания о функциях либо отсутствуют, либо их трудно понять. Так что в прошлом у меня были отличные ответы на вопросы и ответы, поэтому мой вопрос.

Если это поможет, я провел тест для сравнения rand() и rand_r(), создав два случайных изображения RGB, в которых пиксели были сгенерировано с помощью:

pxsPtr[i] = (uint8_t) rand() % 255; // rand() version

pxsPtr[i] = (uint8_t) rand_r(&randRseed) % 255; // rand_r() version

Я удивлен их сходством и теперь еще больше стремлюсь получить ответы на мои вопросы.

rand() test

rand_r() test

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...