Gerando números aleatórios em C
Dica publicada em C/C++ / Introdução
Gerando números aleatórios em C
Para gerar números aleatórios em C, temos duas funções que trabalham
de forma semelhante:
numero= rand() % valor_maximo;
ou
numero= random() % valor_maximo;
Para usá-las, porém, é necessário inicializar o gerador de números aleatórios com a função srand. Vejam um exemplo:
- rand;
- e random.
numero= rand() % valor_maximo;
ou
numero= random() % valor_maximo;
Para usá-las, porém, é necessário inicializar o gerador de números aleatórios com a função srand. Vejam um exemplo:
#include <stdio.h>
#include <stdlib.h>
/* as funções rand(), random() e srand() estão no cabeçalho stdlib.h */
main()
{
int i;
/* inicializar o gerador de números aleatórios */
srand(100);
for (i=0; i<5; i++)
{
/* para gerar números aleatórios de 0 a 50 */
printf("%d ", rand() % 50);
}
return 0;
}
#include <stdlib.h>
/* as funções rand(), random() e srand() estão no cabeçalho stdlib.h */
main()
{
int i;
/* inicializar o gerador de números aleatórios */
srand(100);
for (i=0; i<5; i++)
{
/* para gerar números aleatórios de 0 a 50 */
printf("%d ", rand() % 50);
}
return 0;
}
Como você pode ver, os números aleatórios são criados, mas se você executar o mesmo programa várias vezes, aparecerão os mesmos números.
Isto acontece porque a inicialização do gerador de números aleatórios é constante (100). Para contornar este problema, vamos criar uma forma de inicializar com um número diferente a cada execução. Assim:
#include <stdio.h>
#include <stdlib.h>
/* as funções rand(), random() e srand() estão no cabeçalho stdlib.h */
main()
{
int i;
/* inicializar o gerador de números aleatórios */
/* com time(NULL) */
srand(time(NULL));
for (i=0; i<5; i++)
{
/* para gerar números aleatórios de 0 a 50 */
printf("%d ", rand() % 50);
}
return 0;
}
#include <stdlib.h>
/* as funções rand(), random() e srand() estão no cabeçalho stdlib.h */
main()
{
int i;
/* inicializar o gerador de números aleatórios */
/* com time(NULL) */
srand(time(NULL));
for (i=0; i<5; i++)
{
/* para gerar números aleatórios de 0 a 50 */
printf("%d ", rand() % 50);
}
return 0;
}
Assim os números aleatórios não repetirão a cada execução.