random — gerar números aleatórios

Este módulo implementa um gerador de números pseudoaleatórios (PRNG). O PRNG é um LCG de 32 bits estilo Yasmarang; na primeira importação, obtém uma semente de 32 bits da mesma fonte de hardware que os.urandom() utiliza, e cada número subsequente é uma função determinística dessa semente.

Aviso

O resultado não é criptograficamente seguro – o algoritmo é previsível a partir de uma curta sequência de saída, e a semente inicial contém apenas 32 bits de entropia. Para material de chaveamento, tokens de sessão, salts de palavras-passe ou qualquer outro uso sensível à segurança, utilize os.urandom() em alternativa.

Nota

A seguinte notação é utilizada para intervalos:

  • () são parênteses de intervalo aberto e não incluem os seus extremos. Por exemplo, (0, 1) significa maior que 0 e menor que 1. Em notação de conjuntos: (0, 1) = {x | 0 < x < 1}.

  • [] são parênteses de intervalo fechado que incluem todos os seus pontos limite. Por exemplo, [0, 1] significa maior ou igual a 0 e menor ou igual a 1. Em notação de conjuntos: [0, 1] = {x | 0 <= x <= 1}.

Funções para inteiros

random.getrandbits(n: int) int

Devolve um inteiro com n bits aleatórios (0 <= n <= 32).

random.randint(a: int, b: int) int

Devolve um inteiro aleatório no intervalo [a, b].

random.randrange(start: int, stop: int | None = None, step: int = 1) int

A primeira forma devolve um inteiro aleatório do intervalo [0, stop). A segunda forma devolve um inteiro aleatório do intervalo [start, stop). A terceira forma devolve um inteiro aleatório do intervalo [start, stop) em passos de step. Por exemplo, chamar randrange(1, 10, 2) devolverá números ímpares entre 1 e 9 inclusive.

Funções para números de vírgula flutuante

random.random() float

Devolve um número aleatório de vírgula flutuante no intervalo [0.0, 1.0).

random.uniform(a: float, b: float) float

Devolve um número aleatório de vírgula flutuante N tal que a <= N <= b para a <= b, e b <= N <= a para b < a.

Outras Funções

random.seed(n: int | None = None, /) None

Inicializa o módulo gerador de números aleatórios com a semente n, que deve ser um inteiro. Quando nenhum argumento (ou None) é passado, o PRNG é resemeado a partir da mesma fonte específica da plataforma que os.urandom() utiliza.

random.choice(sequence: Any) Any

Escolhe e devolve um elemento aleatório de sequence (tuplo, lista ou qualquer objeto que suporte a operação de subscrito).