Действует ли функция rand () в c по недетерминированному алгоритму - PullRequest
0 голосов
/ 31 марта 2019

Я хочу знать, выполняет ли функция rand () в программировании на c недетерминированный алгоритм

1 Ответ

4 голосов
/ 31 марта 2019

Функция rand () в c следует недетерминированному алгоритму (?)

Нет. int rand(void) и void srand(unsigned int seed) работают вместе, образуя последовательность псевдослучайных номера. Повторное заполнение с srand() и тем же начальным числом сгенерирует одну и ту же детерминированную последовательность.

Функция rand вычисляет последовательность псевдослучайных чисел в диапазоне от 0 до RAND_MAX C11dr §7.22.2.1 2

Функция srand использует аргумент в качестве начального числа для новой последовательности псевдослучайных чисел, которая будет возвращена последующими вызовами rand. Если затем вызывается srand с тем же начальным значением, последовательность псевдослучайных чисел должна повторяться . Если rand вызывается до того, как были сделаны какие-либо вызовы srand, генерируется та же последовательность, что и при первом вызове srand со начальным значением 1. §7.22.2.2 2

Примечание: эта последовательность может отличаться от компилятора к компилятору, но в пределах данной компиляции последовательность является детерминированной.

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