Como usar o módulo random em Python

Tempo de leitura: 9 minutos

O módulo random é uma das ferramentas mais versáteis e divertidas da biblioteca padrão do Python. Ele permite que desenvolvedores gerem números aleatórios, selecionem itens de forma randômica em sequências e misturem dados de maneira imprevisível. Seja para criar um sistema de sorteio, desenvolver um jogo ou realizar simulações matemáticas, entender como usar o módulo random em Python é um passo fundamental para quem deseja dominar a linguagem e avançar na sua jornada de lógica de programação com Python.

O que é o módulo random e por que ele é importante?

Diferente do que muitos pensam, computadores não geram números verdadeiramente aleatórios por conta própria. Eles utilizam algoritmos matemáticos complexos para criar o que chamamos de números “pseudoaleatórios”. O módulo random implementa o gerador Mersenne Twister, que é amplamente aceito por sua eficiência e confiabilidade em aplicações que não exigem segurança criptográfica.

A importância desse módulo reside na sua capacidade de simular a incerteza do mundo real dentro de um sistema digital. Sem a aleatoriedade, os jogos seriam sempre iguais, os testes de software seriam limitados e as análises estatísticas seriam impossíveis de realizar em larga escala. Se você é um iniciante em Python, este módulo será um dos seus melhores amigos para criar projetos interativos.

Como importar e começar a usar o random

Como o random já faz parte das bibliotecas em Python instaladas por padrão, você não precisa baixar nada externo. Basta importar o módulo no início do seu script para ter acesso a todas as suas funcionalidades.

Python
import random

# Exemplo simples: gerar um número flutuante entre 0.0 e 1.0
numero = random.random()
print(numero)

Ao executar o código acima, você verá um número decimal diferente a cada execução. Esse é o comportamento básico que serve de base para funções mais complexas que exploraremos a seguir.

Gerando números inteiros com random.randint e random.randrange

Uma das tarefas mais comuns é gerar um número inteiro dentro de um intervalo específico. Para isso, existem duas funções principais que geram confusão para iniciantes: randint() e randrange().

Usando o randint()

A função random.randint(a, b) retorna um número inteiro incluído entre os valores a e b. Ou seja, ambos os limites são inclusivos. Isso é perfeito para criar, por exemplo, um jogo de adivinhação de números.

Python
# Gera um número entre 1 e 10, incluindo 1 e 10
dado = random.randint(1, 6)
print(f"Você jogou o dado e caiu: {dado}")

Usando o randrange()

O random.randrange(start, stop, step) funciona de forma muito parecida com a função range do Python. Ele permite definir um início, um fim (exclusivo) e um passo. Por exemplo, se você quiser apenas números pares entre 0 e 100, esta é a escolha ideal.

Python
# Gera um número par entre 0 e 10
par_aleatorio = random.randrange(0, 11, 2)
print(par_aleatorio)

Trabalhando com números decimais (Floats)

Para quem trabalha com cálculos científicos ou financeiros, gerar um float em Python de forma aleatória é essencial. Além da função random() mencionada anteriormente, temos a uniform().

A função random.uniform(a, b) retorna um número de ponto flutuante que está entre os limites definidos. Ao contrário da random(), que sempre fica entre 0 e 1, a uniform() permite que você defina o teto e o piso do valor.

Python
# Gera um preço aleatório entre 10.50 e 99.99
preco = random.uniform(10.50, 99.99)
print(f"O valor sorteado foi R${preco:.2f}")

Sorteando itens de listas e sequências

Muitas vezes, não queremos números, mas sim escolher um nome, uma cor ou um objeto de uma coleção. O módulo random oferece métodos incríveis para manipular listas em Python.

A função random.choice()

Esta função seleciona um único elemento aleatório de uma sequência não vazia. É extremamente útil para escolher o vencedor de um sorteio ou uma resposta aleatória para um chatbot.

Python
opcoes = ["Pedra", "Papel", "Tesoura"]
escolha_computador = random.choice(opcoes)
print(f"O computador escolheu: {escolha_computador}")

A função random.sample() e random.choices()

Se você precisar escolher mais de um item, pode usar sample() para seleções sem repetição ou choices() para seleções onde o mesmo item pode aparecer mais de uma vez. O sample é muito utilizado para criar jogos como o quiz interativo no terminal, onde as perguntas não podem se repetir.

Embaralhando dados com random.shuffle

Imagine que você está criando um jogo de cartas. Você tem um baralho ordenado e precisa misturá-lo. A função random.shuffle() modifica a lista original “in-place”, ou seja, ela altera a ordem dos elementos diretamente na variável fornecida.

Importante: O método shuffle() não retorna uma nova lista; ele altera a lista existente e retorna None. Tentar atribuir o resultado a uma nova variável resultará em perda de dados.

Python
cartas = ["Ás", "Rei", "Dama", "Valete", "10", "9"]
random.shuffle(cartas)
print(f"Baralho embaralhado: {cartas}")

Controlando a aleatoriedade com random.seed

Pode parecer contraditório, mas às vezes precisamos que a “aleatoriedade” seja previsível. Isso é comum em testes de software ou em pesquisas acadêmicas onde o experimento precisa ser reproduzido. De acordo com a documentação oficial do Python, a função seed() inicializa o gerador de números aleatórios.

Se você definir o mesmo valor de seed, a sequência de números gerada será exatamente a mesma em qualquer máquina que execute o código. Veja na prática:

Python
random.seed(42)
print(random.random()) # Sempre resultará no mesmo valor inicial

Segurança: Quando NÃO usar o módulo random

Embora o módulo random seja excelente para uso geral, ele não é seguro para fins criptográficos. Isso significa que você não deve usá-lo para gerar senhas, tokens de segurança ou qualquer coisa que envolva proteção de dados sensíveis. Para esses casos, a biblioteca padrão do Python oferece o módulo secrets.

O secrets gera números que são verdadeiramente difíceis de prever por atacantes. Para entender mais sobre como manter seu código seguro, vale a pena consultar guias sobre segurança da informação na Wikipédia.

Exemplos Práticos: Criando Ferramentas Reais

Vamos aplicar o que aprendemos em um pequeno projeto modular. Criaremos um gerador de grupos aleatórios para turmas de estudo.

Etapa 1: Definindo os participantes

Primeiro, precisamos de uma lista de nomes. Podemos ler esses nomes de um arquivo ou simplesmente defini-los em uma lista.

Python
alunos = ["Ana", "Bruno", "Caio", "Duda", "Erick", "Fabio", "Gabi", "Hugo"]

Etapa 2: Embaralhando e dividindo

O segredo aqui é embaralhar a lista para garantir que a ordem original não influencie na formação dos grupos.

Python
def gerar_grupos(lista, tamanho_grupo):
    random.shuffle(lista)
    return [lista[i:i + tamanho_grupo] for i in range(0, len(lista), tamanho_grupo)]

grupos = gerar_grupos(alunos, 2)
print(grupos)

Código Completo do Projeto de Sorteio

Aqui está um script funcional que simula um sistema de sorteio de prêmios com múltiplos ganhadores, garantindo que ninguém ganhe duas vezes.

Python
import random

def sistema_sorteio():
    participantes = ["João", "Maria", "Carlos", "Ana", "Lucas", "Beatriz", "Ricardo", "Fernanda"]
    premios = ["Notebook", "Vale Compras R$ 500", "Smartphone"]
    
    print("--- Iniciando o Sorteio Academify ---")
    
    # Embaralhamos os participantes para garantir total aleatoriedade
    random.shuffle(participantes)
    
    # Selecionamos os vencedores sem repetição usando sample
    vencedores = random.sample(participantes, k=len(premios))
    
    for i, premio in enumerate(premios):
        print(f"O ganhador do {premio} foi: {vencedores[i]}")

if __name__ == "__main__":
    sistema_sorteio()

Comparativo de Funções do Módulo Random

Para facilitar a sua consulta rápida, preparamos uma tabela com as principais funções e seus comportamentos.

FunçãoTipo de RetornoComportamento Principal
random()FloatRetorna valor entre 0.0 e 1.0
randint(a, b)InteiroRetorna valor entre a e b (inclusive)
choice(seq)ElementoEscolhe um único item de uma lista ou tupla
shuffle(list)NoneMistura os elementos da lista original
sample(seq, k)ListaEscolhe k itens únicos da sequência

Perguntas Frequentes

O módulo random é melhor que o NumPy para aleatoriedade?

O módulo random é ideal para scripts simples e uso geral. Se você trabalha com Ciência de Dados e precisa gerar milhões de números aleatórios em matrizes, o numpy.random é muito mais rápido e eficiente.

Como gerar apenas números ímpares aleatórios?

Você pode usar random.randrange(1, 100, 2). O passo “2” garante que o sorteio pule de dois em dois a partir do número 1.

Como escolher um vencedor em um dicionário através do módulo random?

O random.choice() não funciona diretamente com dicionários. Você deve converter as chaves para uma lista primeiro: random.choice(list(meu_dicionario.keys())).

É possível gerar cores hexadecimais aleatórias?

Sim! Você pode usar random.randint(0, 0xFFFFFF) e formatar o resultado como uma string hexadecimal para usar em seus designs.

Por que meu random.shuffle() retorna ‘None’?

Porque o shuffle altera a lista diretamente (in-place). Não use nova_lista = random.shuffle(velha_lista), apenas chame a função e depois use a lista original.

O comando random.seed(0) é seguro?

Ele é seguro para testes, mas usar uma semente fixa em produção mata o propósito da aleatoriedade, pois os resultados serão sempre os mesmos.

Como fazer um sorteio ponderado (alguns itens têm mais chance)?

A partir do Python 3.6, você pode usar random.choices(opcoes, weights=[10, 1, 1]), onde o primeiro item terá muito mais chance que os outros.

Posso usar o random no navegador com PyScript?

Sim, você pode usar PyScript no navegador e importar o módulo random normalmente para criar interatividade web com Python.

Ao dominar o módulo random, você abre portas para criar desde ferramentas de automação até jogos da forca em Python mais dinâmicos e interessantes. Pratique os exemplos acima e tente implementar sua própria lógica de sorteio hoje mesmo!

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Fundamentos
    Foto do Leandro Hirt

    Como usar o módulo time em Python para iniciantes

    O tempo é um dos recursos mais preciosos em qualquer aplicação tecnológica. Seja para medir o desempenho de uma função,

    Ler mais

    Tempo de leitura: 11 minutos
    14/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Por que seu script trava? Descubra o Threading no Python

    Você já sentiu a frustração de rodar um código e, de repente, a interface parar de responder ou o terminal

    Ler mais

    Tempo de leitura: 8 minutos
    13/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Operações matemáticas com o módulo math em Python

    O módulo math é uma das ferramentas mais poderosas e essenciais para quem está começando a aprender programação. Ao realizar

    Ler mais

    Tempo de leitura: 8 minutos
    13/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Como fazer backup automático de arquivos com Python

    Garantir a segurança dos seus dados é uma das tarefas mais importantes no dia a dia de qualquer pessoa que

    Ler mais

    Tempo de leitura: 8 minutos
    12/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Entendendo o módulo sys em Python e para que ele serve

    O universo da programação oferece ferramentas poderosas que muitas vezes passam despercebidas pelos iniciantes. Uma dessas ferramentas é o módulo

    Ler mais

    Tempo de leitura: 9 minutos
    11/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Introdução ao Módulo itertools em Python

    Se você já sentiu que seus loops estão ficando bagunçados ou que está escrevendo código demais para realizar tarefas simples

    Ler mais

    Tempo de leitura: 9 minutos
    11/02/2026