Bom, pra começar eu tava querendo fazer um gerador de CPF que quando
você executasse ele já mandasse o um número aleatório, sem precisar digitar
nada. Emtão me perguntei: "Como eu gero número aleatório em C?".
Aí eu dei uma fuçada então...
(Ah sim! Estou usando o compilador Dev-C++);
Vou ensinar pra vocês, como gerar número aleatórios na linguagem C
e explicar mais ou menos como acontece essa loucura.
Primeiramente, o nome desse post está errado, pois não é possível
para um computador gerar um número REALMENTE aleatório, o que
aprenderemos aqui é como gerar um número PSEUDO-aleatório
(pseudo significa 'falso'), bem, vamos lá.
As funções que vamos usar são:
-srand()
-rand()
-time()*
*(Essa está contida na biblioteca "time.h").
Vamos explicar agora as funções.
rand() - Essa aqui que gera o(s) número(s) pseudo-aleatório(s), o retorno
dela é(são) esse(s) números(s);
srand() - Chamamos essa função de 'seed', num conceito básico, 'seed' é a base
de alguma outra função, ou seja, a outra função (no caso "rand()") utiliza ela("srand()") pra chegar
à algum resultado;
time() - Os sistemas cujo horário é baseado no POSIX (Portable Operating System Interface),
tem as horas calculadas em segundos, o argumento dessa função define de quanto em quanto
tempo queremos receber o valor do horário.
Código-exemplo:
Vamos explicar o por que da combinação de funções:
Lembram que "time()" retorna o horário num intervalo definido por nós?
Então, se esse intervalo não existe (Seu valor é "NULL"), então ele retorna
o tempo sem parar.
A função "srand()" é a 'seed' de "rand()", então, o retorno dela será o valor
que "rand()" usará para gerar o nosso número pseudo-aleatório.
Se o argumento de "srand()"
muda direto, teremos então uma 'seed' que é diferente a cada segundo!**
**(Lembre-se que o POSIX calcula o horário por segundos, mas a função
"time()" nesse caso retorna o mesmo valor no intervalo de cada segundo).
Dá pra usar isso aí pra várias coisas, mas no caso eu fiz só o CPF.
Se alguém criar um RPG em C manda pra mim hein!
Espero ter ajudado, flwz ae!
gukiboy - [G.C.T]
valeu em cara, a parte de C/C#/C++ do blog ainda ta muito fraca, precisamos de mais tutos assim =)
ResponderExcluir