Não entendi como funciona a função srand()
Não entendi como funciona a função srand()
Olá, Alan! Tudo bem?
Essa dúvida é bastante comum. Vamos começar pelo range
.
O range nos passa um valor aleatório de um intervalo entre 0 e RAND_MAX. O RAND_MAX pode ser alterado. No nosso caso temos:
int numerogrande = rand();
int numeroSecreto = numerogrande % 100;
O % 100
é usado para limitar o intervalo entre 0 e 99. O número 100 é nosso RAND_MAX.
Acontece que dentro de um mesmo intervalo ele sempre irá gerar o mesmo valor. Inclusive, caso você gere mais de um valor eles sempre serão o mesmo também. Isso prejudicaria nosso jogo. Aqui entra o srange.
Para de fato gerar números aleatórios diferentes em cada vez que ele roda precisamos de uma semente. Essa semente quando usamos apenas o rand é fixa. O programa adota a semente como 1.
Utilizando srand(time(0));
garantimos que a semente será sempre diferente já que estamos utilizando o time(0). Dessa forma os números de fatos são sempre aleatórios. Em resumo, o srand
vai definir essa semente e ela passa a assumir o valor do time(0) naquele momento. Essa ideia de semente define o ponteiro para algum local na lista em que você está entrando, que no caso é o time(0).
Espero ter ajudado.
Qualquer dúvida, estou à disposição.
Abraços!