Para gerarmos números inteiros aleatórios usamos o rand, e é necessária aquela linha de código do srand() para conseguirmos gerar valores verdadeiramente aleatórios usando o rand().
srand(time(NULL));
Mas porquê?
Os números gerados pelo rand não são completamente aleatórios, são pseudo-aleatórios (pseudorandom).
Existe tem várias "sequências" de algarismos, como por exemplo
1804289383
que é a "primeira" sequência.
O rand() sozinho, em si, gera só esse número (ou sequência). Claro que depois colocamos o '%', que irá criar outros valores.
O srand() decide qual a sequência que o rand vai utilizar, ao qual chamamos a seed (semente).
Se colocarmos
srand(1);
A seed 0 também é a mesma: StackOverflow - Diferença entre srand(0) e srand(1)
Se colocarmos outra seed (que não 0 ou 1), outra sequência será gerada pelo srand.
Como queremos uma seed diferente sempre, nada melhor que usar o tempo, que está constantemente a mudar. Por isso colocamos dentro do srand o time(NULL).
srand(time(NULL));
Referências
- StackOverflow - Diferença entre srand(0) e (1)
- cplusplus.com - srand and rand for random numbers
- Teepublic - Random Dices Onisie (Imagem)
- geeksforgeeks - rand() and srand() in C/C++
Sem comentários:
Enviar um comentário
Comente de forma construtiva...
Nota: só um membro deste blogue pode publicar um comentário.