Buscar

Gerando valores aleatórios em C

Prévia do material em texto

Gerando Valores aleatórios em C. 
 
Vamos precisar das bibliotecas: 
<stdilib.h> 
<time.h> 
 
Com stdlib, iremos usar a função rand() para gerar valores aleatórios de 0 ao rand_max que 
é o maior inteiro possível. 
 
Como usar: 
int num = rand(); //onde num é a variável que vai estar recebendo um número aleatório 
trazido pela função rand(). 
 
O grande problema aqui é que ao usar apenas essa função você só irá obter o mesmo 
valor, aleatório, mas o mesmo. 
 
Então para mudar isso faremos uso de uma outra função: srand(). Essa função é uma 
configuração para a rand(), onde irá gerar valores aleatórios com auxilio do que chamamos 
de semente. 
//Semente nada mais é que uma informação que será passada para gerar valores 
aleatórios. 
 
O que pode ser essa semente? O tempo da máquina, pois o tempo está em constante 
mudança, ne? Isso irá possibilitar a geração de valores aleatórios, mas ainda gigantes. 
 
Para usarmos o tempo da máquina iremos fazer uso da biblioteca time.h importando a 
função time(). Com um tempo NULL (nulo) inicialmente. Logo, teremos: 
 
Sintaxe de uso: 
srand(time(NULL)); //importante que antes de usar a função rand(), você configure com 
srand()! 
int num = rand(); //agora sim os valores gerados serão aleatórios mas enormes. 
 
Para estabelecer um limite iremos modularizar esse valor randômico gerado, isto é, iremos 
pegar o resto da divisão inteira do valor randômico gerado pelo limite que queremos. Não é 
complicado, rlx. Vejamos: 
 
La no momento de uso da função rand(), você irá usar o % e o número de limite desejado + 
1, pois o rand desconsidera o ultimo número. Veja exemplos: 
//teste para valores entre 0 e 100. 
int num = rand() % 101; //desta forma nossa variável “num” receberá o resto da divisão 
inteira de um valor randômico qualquer por 101. Gerando assim valores entre 0 e 100, pois 
a função desconsidera o último valor. 
//outro ex 
num = 2 + rand() % 10; //aqui num receberá valores aleatórios entre 2 e 10, pois ao 
randomizar um numero gigante a gente apenas terá o resto da divisão deste número por 
10. Priorizando o pegar o resto primeiro e depois somar este resto + 2.