1
resposta

Função srand()

Não entendi como funciona a função srand()

1 resposta

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!


Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software