Demorou mais saiu ! Mais um exercício de C, nos voltando agora para a escolha randômica de números .
Para demonstrar a utilização dos números randômicos em C, faremos um pequeno programa que nos dara 6 números de 1 a 60 ( Dai jogar na mega-sena é com você).
Segue o código explicado:
#include <stdio.h>
#include <time.h>
/*Por que incluir a biblioteca TIME.H ? Basicamente por que nosso computador não gera
números aleatórios, alias a função do computador é executar comandos de maneira exata.
Portanto, utilizaremos funções da biblioteca TIME.H que, utilizando o tempo (milesimos, etc)
nos gerará números pseudo-aleatórios */
#define MAX 60
#define QTDE 6
int main() {
int i;
int num[QTDE];
srand(time(NULL));
/*A função SRAND inicializa os valores de calculo da funcao RAND com o tempo atual
isso evita que todas as vezes que exercutarmos o programa, exibirmos os mesmos valores*/
for(i=0; i< QTDE; i++)
{
num[i] = (rand() % MAX );
/* O complemento do comando rand, %MAX, limita o número máximo que será gerado
pela função. O mesmo é definido pela constante MAX(60) */
}
/*Exibição dos valores*/
printf("Numeros sorteados: \n");
for(i=0; i< QTDE; i++)
{
printf(" %d ", num[i]) ;
}
return 0;
}
Execução:
Por que números aleatórios?
Em grandes sistemas comerciais, realmente a utilização deste recurso é muito pouca, ou quase nenhuma. Mas imagine um jogo de luta, onde o adversário sempre te ataca da mesma forma repetidamente. Meio chato né? Um comportamento "aleatório" é necessário neste caso. Principalmente no ramo de jogos, e quaisquer outros desenvolvimentos onde esta interação com o usuário é necessária, existe a necessidade de se utilizar deste recurso.
Sugestões de melhoria no algoritmo !
Vamos supor que eu queira utilizar o programa acima para jogar na loteria. Para isso, precisamos garantir que o programa não calcule aleatoriamente o mesmo número( isso é possível). Para facilitar para o usuário também seria bom exibir o resultado de forma crescente. Que tal implementar essas modificações?