Aleatoriedade em C
Como tornar seus programas mais flexíveis e com sistemas aleatórios bem úteis em qualquer lugar.
Introdução
Várias vezes ao codarmos algo em C, nos deparamos com coisas que necessitam ser aleatórias, como em um jogo por exemplo, precisa-se de sistemas aleatórios para um item que será deixado por alguém após morrer por exemplo, ou em geração de senhas, coisas assim. Existem várias formas para se obter isso, a principal é noção de algumas funções em C e principalmente criatividade.
Irei citar agora algumas funções que sempre serão usadas praticamente, para poder ter aleatoriedade.
Algumas funções que dão muita ajuda, muita mesmo, para aleatoriedade são srand() e rand().
A função srand tem o seguinte protótipo:
void srand ( unsigned int seed );
A utilidade dela é rodar um "sistema aleatório", para o rand() retornar algo novo sempre, caso srand não for declarada, rand vai gerar sempre o mesmo número.
A utilização dela é assim: você declara o tempo de refresh dentro de srand, mais ou menos assim:
Algumas funções
Irei citar agora algumas funções que sempre serão usadas praticamente, para poder ter aleatoriedade.
Algumas funções que dão muita ajuda, muita mesmo, para aleatoriedade são srand() e rand().
A função srand tem o seguinte protótipo:
void srand ( unsigned int seed );
A utilidade dela é rodar um "sistema aleatório", para o rand() retornar algo novo sempre, caso srand não for declarada, rand vai gerar sempre o mesmo número.
A utilização dela é assim: você declara o tempo de refresh dentro de srand, mais ou menos assim:
srand(time(NULL));
Para usar time() precisa-se declarar a biblioteca time.h. Quando declarada aquele modo, não haveria tempo determinado para srand gerar um novo número.
Agora a função rand() já é para jogar o número aleatório que srand gerou caso ela tenha sido declarada. O protótipo dela é esse:
int rand ( void );
Você pode usa-la assim:
printf("Um número aleatório: %d
", rand()%10);
Esse %10 serviria para delimitar o máximo que rand poderia chegar, que seria algo menor que 10.
se vc quiser gerar numeros aleatórios entre 0 e X vc pode fazer :
X * rand()/(RANDMAX+1.0);
e entre X e Y
X + ((Y - X) * rand()/(RANDMAX+1.0));
usar o %10 para limitar um gerador de numeros aleatórios vicia um pouco o resultado.