Pesquisar aqui

sexta-feira, 31 de janeiro de 2020

C++ - rand() e srand() explicados


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);
Será gerada essa mesma sequência que já vos mostrei, a primeira seed.

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

Sem comentários:

Publicar um comentário

Comente de forma construtiva...

Nota: só um membro deste blogue pode publicar um comentário.