Olá pessoal, eu particularmente não consegui entender o termo semente para srand e a função do mesmo. Alguém poderia me explicar? valeu!!!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá pessoal, eu particularmente não consegui entender o termo semente para srand e a função do mesmo. Alguém poderia me explicar? valeu!!!
Olá, Wesley! 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!
Obrigado, Larissa!! entendi agora.