Pages

sábado, 6 de novembro de 2010

Entendendo -srand()

Eaí galera, aqui é o gukiboy e esse meu primeiro tutorial XD


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]