функция srand (время (NULL))

#include <stdio.h>
#include <stdlib.h>

int main( void){

    int x = rand()%100;
    printf("%d\n", x);
    return 0;
}

Приведенный выше код правильно генерирует случайное число. Это верно? Но другие источники всегда включают библиотеку и srand(time(NULL)). Почему мы должны включать include library и srand(time(NULL))? Есть ли причины для включения?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main( void){
    srand(time(NULL));
    int x = rand()%100;
    printf("%d\n", x);
    return 0;
}

person aizhan_maksatbek    schedule 14.10.2018    source источник
comment
В первом случае это всегда одно и то же случайное число при каждом запуске программы. Второй случай запускает ГСЧ.   -  person Weather Vane    schedule 14.10.2018


Ответы (3)


Потому что, если вы запустите этот код много раз, вы получите тот же результат! (также rand() возвращает один и тот же результат при каждом запуске). Следовательно, вы можете инициализировать начальное число random при каждом запуске кода, чтобы получить другой случайный результат на srand. Использование time(NULL) для установки другого случайного начального числа через srand.

person OmG    schedule 14.10.2018

srand — это функция генератора случайных чисел, которая рандомизирует число, созданное функцией rand.

person haccks    schedule 14.10.2018
comment
Почему отрицательный голос? - person haccks; 14.10.2018

Представьте, что у вас есть (огромная) библиотека с (огромными) книгами, заполненными (очевидно, случайными, но фиксированными) числами.

Когда вы делаете rand(), вы получаете текущий номер в текущей книге и переходите к следующей.

Когда вы делаете srand(<number>), вы выбираете книгу, которую rand() будет использовать с этого момента.

time(NULL) вернуть количество (после преобразования) секунд примерно с полуночи 1970-01-01. Это число меняется каждую секунду, поэтому использование этого числа для «выбора книги» в значительной степени гарантирует новую последовательность «случайных» чисел каждый раз, когда ваша программа запускается.

Если вы не выберете книгу, функция rand() возьмет числа из книги №1 (так же, как srand(1)).

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

person pmg    schedule 14.10.2018