+1

Técnicas e Algoritmos - Números aleatórios

criado por Leonardo Caitano em 08/10/2006 11:01am
A linguagem php define uma função de nome rand(), uma abreviatura de random. Esta função gera números aleatórios entre 0 e RAND_MAX.

Protótipo da função rand()
int rand ( [int min, int max] );

Os colchetes indicam que os parâmetros podem ser omitidos. Se chamado sem os parâmetros opcionais (min e max), rand() retornará um número aleatório entre 0 e RAND_MAX. Se você precisa de um número aleatório entre 5 e 15 (inclusive), por exemplo, utilize rand (5,15).

Nota: A partir do PHP 4.2.0, não é mais necessário semear o gerador de números aleatórios com srand() pois isso é feito automaticamente.

Entendendo como funciona o gerador de números aleatórios.

Talvez você esteja se perguntando o que significa semear o gerador de números aleatórios. Bom, Imagine que a função rand() simplismente execute um calculo numérico baseado em valores pre-estabelecidos e quando chamada apenas retorne o resultado desse cálculo e guarde esse valor em algum lugar na memoria, na próxima chamada à função imagine que ela execute o mesmo cálculo, porém desta vez baseado no resultado da operação anterior. Sendo assim toda vez que uma chamada a rand() fosse realizada um novo número seria apresentado
como resultado.

Agora o pequeno detalhe. Quando você chamasse novamente a função rand() pela primeira vez, ou seja, sem que haja nenhum resultado anterior em memória o que aconteceria?
Você obteria o mesmo resultado de quando a chamou pela primeira vez, pois o primeiro cálculo é realizado com numero pre-estabelecidos, lembra?

Para resolver esse problema foi preciso apresentar um número diferente para a função rand() sempre que houvesse uma primeira chamada à função. Para gerar esse numero diferente, poderiamos por exemplo nos basear na data/hora em que a função foi chamada, e o cálculo realizado pela função rand() usaria esse número ao invés de usar números pre-estabelecidos.
E isso é o que chamamos de gerar uma semente, ou semear o gerenciador de números aleatórios.

Comentários:

Nenhum comentário foi enviado ainda.

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)