RAND(3)

NOME
rand, srand - gerador de números aleatórios

SINÓPSE
#include <stdlib.h>

int rand(void);

void srand(unsigned int seed);

DESCRIÇÃO
A função rand() retorna um número inteiro aleatório entre 0 e RAND_MAX.

A função srand() ajusta seu argumento como uma semente para uma nova seqüência de números inteiros aleatórios a serem retornados por rand(). Estas seqüências podem ser repetidas chamando srand() com o mesmo valor para a semente.

Se nenhum valor para a semente é fornecido, a função rand() automaticamente assume o valor 1.

VALORES RETORNADOS
A função rand() retorna um valor entre 0 e RAND_MAX. A função srand() não retorna nenhum valor.

NOTAS
As versões de rand() e srand() na biblioteca C do Linux utilizam o mesmo gerador de números aleatórios utilizado por random() e srandom(), então o bit de ordem inferior deve ser tão aleatório quanto o bit de ordem superior. No entanto, em implementações mais antigas de rand(), os bits de ordem inferior são muito menos aleatórios que os bits de ordem superior.

Em Numerical Recipes in C: The Art of Scientific Computing (William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New York: Cambridge University Press, 1992 (2nd ed., p. 277)), os seguintes comentários são feitos:
    "Se voce quer gerar um número inteiro aleatório entre 1 e 10, você sempre deve fazer isto usando bits de ordem superior, como em

        j=1+(int) (10.0*rand()/(RAND_MAX+1.0));

    a nunca por algo do tipo:

        j=1+(rand() % 10);

    (o qual utiliza bits de ordem inferior)."

Geração de número aleatório e um tópico complexo. O livro Numerical Recipes in C (veja referência acima) provê uma excelente discussão sobre geração prática de números aleatórios no Capítulo 7 (Números Randomicos).

Para um discussão mais teórica, a qual também abrange muitos artigos práticos neste tópico, por favor veja o Capítulo 3 (Número aleatórios) em Donald E. Knuth's The Art of Computer Programming, volume 2 (Seminumerical Algorithms), 2nd ed.; Reading, Massachusetts: Addison-Wesley Publishing Company, 1981.

DE ACORDO COM
SVID 3, BSD 4.3, ISO 9899.

VEJA TAMBÉM
random(3), srandom(3), initstate(3), setstate(3).

TRADUZIDO POR LDP-BR em 13/06/2001.

  Tradução:
Marcelo Pereira da Silva <marcelo@pereira.com>

  Revisão.:
André Luiz Fassone <lonely_wolf@ig.com.br>