quarta-feira, 15 de outubro de 2014

Números Aleatórios em C

Para gerar 10 números inteiros aleatórios basta utilizar a função abaixo:

 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
#include<stdio.h>
#include<stdlib.h>

int main(void) { 
     int i;
     printf("Gerando 10 valores aleatorios:\n\n");
     for (i = 0; i < 10; i++) 
          printf("%d ", rand() % 100);
     } 
     getch();
     return 0;
} 


Para restringir os números a um intervalo de 0 a 100 foi utilizado o comando: % 100
O problema da função acima é que ao executar várias vezes, são gerados os mesmos números, para contornar este problema temos que utilizar a função srand() passando um valor como semente. Segue exemplo abaixo:

 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
#include<stdio.h>
#include<stdlib.h> //necessário p/ as funções rand() e srand()
#include<time.h>   //necessário p/ função time()

int main(void) {
     int i;
     printf("Gerando 10 valores aleatorios:\n\n"); 
     srand(time(NULL));
     for (i=0; i < 10; i++) { 
          // gerando valores aleatórios na faixa de 0 a 100
           printf("%d ", rand() % 100);
     }
     getch();
     return 0;
}

/* srand(time(NULL)) objetiva inicializar o gerador de números
aleatórios com o valor da função time(NULL). Este por sua vez,
é calculado como sendo o total de segundos passados desde
1 de janeiro de 1970 até a data atual.
Desta forma, a cada execução o valor da "semente" será diferente. */  

Termino aqui meu primeiro post nesse novo blog, espero que apreciem.