Srand time 0 c что это
Перейти к содержимому

Srand time 0 c что это

  • автор:

Функция srand

Функция srand выполняет инициализацию генератора случайных чисел rand . Генератор псевдо-случайных чисел инициализируется с помощью аргумента seed , который играет роль зерна.

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

Если seed установлен в 1, генератор инициализируется до первоначального значения и производит те же значения, как перед любым вызовом рандов или srand .

Для того, чтобы генерировать случайные числа, функция srand обычно инициализируется некоторыми различными значения, например, такие значения генерируются функцией time . Значение, возвращенное функцией time (объявлена в заголовке ) отличается каждую секунду, что дает возможность получать совершенно случайные последовательности чисел, при каждом новом вызове функции rand .

Параметры:

  • seed
    Целое значение, используемое для рандомизации псевдо-случайных чисел, генерируемых специальным алгоритмом.

Возвращаемое значение

Функция не возвращает никакого значения.

Пример: исходный код программы

//пример использования функции srand #include #include #include int main ()

Случайные числа в C++: функции rand() и srand()

Статьи по c++

В центре нашего внимания будет функция rand(), которая используется для генерации числа от 0 до RAND_MAX. Где RAND_MAX – это значение, которое меняется в зависимости от используемого компилятора (обычно 32767).

В следующем примере вы увидите, как сгенерировать число от 0 до 999:

#include #include using namespace std; int main() < // Генерируется случайное число от 0 до 999. cout1000
Code language: PHP (php)

Генерация случайного числа в пределах диапазона: оператор модуля (%)

Команда rand()%1000 генерирует целое число в диапазоне от 0 до 999.

Если использовать инструкцию rand()%N, то в действительности мы получим число от 0 до N-1.

Чтобы установить максимум, используется оператор модуля (%), который, как мы знаем, используется для вычисления остатка от целочисленного деления, и это объясняет, почему максимальное значение может быть N-1!

Так, любое число, делящееся на 5, может дать в качестве остатка 0, 1, 2, 3 и 4… оно не может дать 5, потому что иначе мы имели бы целочисленное деление без остатка!

rand()%2 // генерирует число от 0 до 1 rand()%100 // генерирует число от 0 до 99 rand()%43 // генерирует число от 0 до 42 rand()%10+5 // генерирует число от 5 до 14
Code language: JavaScript (javascript)

В последней инструкции мы добавили +5 (это называется смещением) к обоим числам в диапазоне (меньшему и большему).

Случайное число всегда одно и то же!

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

Вы заметите, что каждый раз, когда вы запускаете код, вы всегда получаете одно и то же число!

Но как это возможно? Разве это не должен был быть генератор случайных чисел?

Объяснение этого явления связано с функцией rand(): она, по сути, не генерирует истинно случайное число, а просто возвращает следующее псевдослучайное значение в последовательности значений от 0 до RAND_MAX.

Поэтому для получения случайного числа необходимо изменить начальную точку (seed) этой последовательности с помощью функции srand().

Генерация случайного числа с помощью srand() и time()

Для этого нам нужно дополнить код, который мы видели ранее, функциями srand() и time().

Давайте посмотрим пример с использованием простого цикла for для создания не одного, а 10 случайных чисел:

#include #include #include using namespace std; int main() < // Инициализируйте генератор псевдослучайных чисел. srand(time(NULL)); for(int i=0;i10;i++) < // Генерируется случайное число от 0 до 9. cout10 >
Code language: PHP (php)

Функция srand() используется для инициализации функции генерации случайных чисел: без нее программа всегда извлекала бы одни и те же случайные числа из одного и того же семени.

Трюк для рандомизации seed заключается в том, чтобы установить его с помощью time(NULL) или time(0), встроив соответствующую функцию, найденную в библиотеке ctime (которую мы включили в наш проект).

Обратите внимание, что в первом примере, предложенном в этой статье, функция srand() отсутствовала: каждый раз, когда используется rand() без выполнения программистом команды srand(), как если бы была установлена srand(1)… вот почему предыдущий пример всегда возвращал одно и то же число!

Значение строки srand(time(NULL))

Не совсем так, как было написано. Для генерации псевдослучайных чисел используется функция rand() . Она генерирует числа на основе базы. Если базу не менять, последовательность псевдослучайных чисел будет одна и та же. Для установки базы генератора псевдослучайных чисел служит функция srand() . Ее аргумент — и есть значение базы. Сочетание srand(time(NULL)) устанавливает в качестве базы текущее время. Этот прием часто используется для того, чтобы при разных запусках генератора псевдослучайных чисел была всякий раз разная база и, соответственно, разный ряд получаемых значений.

Отслеживать
8,677 18 18 золотых знаков 74 74 серебряных знака 183 183 бронзовых знака
ответ дан 6 окт 2011 в 11:34
23.9k 2 2 золотых знака 38 38 серебряных знаков 69 69 бронзовых знаков
а можно time заменить на что-то другое?
6 окт 2011 в 11:39

Можно заменить на что угодно, на любое число, просто этот прием гарантирует, что каждый раз будет разная база. Время ведь при каждом новом запуске меняется.

6 окт 2011 в 11:41
На что угодно?? Число?? Или. можете привести пример?)
6 окт 2011 в 11:43

Можно число — но когда будешь запускать, посмотри на результат, он всегда будет одинаковый, попробуй вывести случайных 10 чисел и все разы они будут одни и те же, а если параметр время — все 10 раз будет разный.

6 окт 2011 в 11:46

из линуксового мана: #include int rand(void); void srand(unsigned int seed); The rand() function returns a pseudo-random integer in the range 0 to RAND_MAX inclusive (i.e., the mathematical range [0, RAND_MAX]). The srand() function sets its argument as the seed for a new sequence of pseudo-random integers to be returned by rand(). These sequences are repeatable by calling srand() with the same seed value.

srand в C++: инициализация случайного генератора

Привет! В этой статье мы поговорим о функции srand . Эта функция используется в C++ для инициализации генератора случайных чисел. Начнем мы с разбора этой функции на примерах, а закончим упражнениями для закрепления материала.

Иллюстрация srand

Инициализация псевдо-случайных чисел при помощи srand

Функция srand доступна нам после подключения заголовочного файла в C или в C++. Эта функция выглядит следующим образом:

void srand (unsigned int seed);

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *