RANDOM(3)

NOME
random, srandom, initstate, setstate - gerador de números aleatórios

SINÓPSE
#include <stdlib.h>

long int random(void);
void srandom(unsigned int seed);
char *initstate(unsigned int seed, char *state, size_t n);
char *setstate(char *state);

DESCRIÇÃO
A função random() usa um gerador de números aleatórios não-linear de retorno aditivo utilizando uma tabela padrão de tamanho 31 inteiros longos para devolver sucessivos números pseudo-aleatórios na faixa de 0 até RAND_MAX. O período deste gerador de números aleatórios é muito grande, aproximadamente 16*((2**31)-1).

A função srandom() ajusta o seu argumento como sendo a semente para uma nova seqüência de inteiros pseudo-aleatórios a serem devolvidos por random(). Estas seqüências são reproduzidas chamando srandom() com o mesmo valor para a semente. Se nenhuma semente é informada, a função random() assume automaticamente o valor 1 como semente.

A função initstate() permite que um vetor state seja inicializado para uso por random(). O tamanho n do vetor 'state' é utilizado por initsate() para decidir o quanto sofisticado um gerador de números aleatórios deve ser — quanto maior o vetor state, melhor será o número aleatório. seed é a semente para a inicialização, a qual especifica o ponto inicial para a seqüência de números aleatórios, e proporciona para reinício no mesmo ponto.

A função setstate() altera o vetor state utilizado pela função random(). O vetor state é utilizado para gerar números aleatórios até a próxima chamada a initstate() ou setstate(). state primeiro deve ter sido inicializado utilizando initstate() ou ser o resultado de um chamada anterior de setstate().

VALORES RETORNADOS
A função random() devolve um valor entre 0 e RAND_MAX. A função srandom() não devolve valores. As funções initstate() e setstate() retornam um ponteiro para o vetor 'state' anterior, ou NULO em caso de erro.

ERROS

EINVAL
    Um vetor state menor que 8 bytes foi especificado para initstate().

NOTAS
Atualmente valores 'ótimos' para o tamanho n do vetor state são 8, 32, 64, 128 e 256 bytes; outros valores serão arredondados, para baixo, para o valor conhecido mais próximo. Utilizando menos que 8 bytes causará um erro.

DE ACORDO COM
BSD 4.3.

VEJA TAMBÉM
rand(3), srand(3).

TRADUZIDO POR LDP-BR em 02/07/2001.

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

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