Como Gerar Números Aleatórios em Python - A Biblioteca random

Neste tutorial, vamos aprender como gerar números aleatórios usando o módulo random da biblioteca padrão do Python.

Tutorial anterior: Como criar, importar e usar Módulos
Veja também: Como entrar no mercado de trabalho Python



Números Aleatórios - Por que usar ?

A utilidade de se gerar números aleatórios, são enormes.

Um exemplo bem claro e muito utilizado, são em jogos.
Rolar os dados, escolher inimigos e personagens aleatoriamente, localização nos mapas, alguns games ficam 'sorteando' coisas (skins, gemas, poder, equipamentos etc), tudo isso através de números aleatórios.

Já perdeu a senha ou fez algum cadastro que necessitava receber um código numérico ou alfanumérico (tipo, 23&6342h) em seu e-mail ou via SMS? Pois é, aquele código é gerado aleatoriamente.

Muitas vezes, para fazer simulações, principalmente científicas e de outros cunhos acadêmicos, é necessário usar uma enormidade de números aleatórios.

Se já teve uma cadeira de Probabilidade e Estatística na faculdade, sabe que se usa bastante números aleatórios.

São um dos conceitos mais importantes no mundo da computação, e vamos aprender agora a usar a biblioteca random (random module) em Python.

Gerar Número Inteiro Aleatório: A Função randint

Primeiro, vamos aprender como gerar um número, aleatoriamente, que seja um inteiro.




Para isso, vamos usar a função randint, da biblioteca padrão do Python, a random. Ou sej, bem no início, devemos importar esse módulo:
import random

Agora, vamos usar a randint para gerar um número.
Essa função tem dois parâmetros, vamos chamar de inicio e fim:
random.randint(inicio, fim)

Essa função retorna um número inteiro de 'inicio' até 'fim' (inclusive eles).
Por exemplo:
  • randint(1,10): pode gerar qualquer número do 1 até o 10
  • randint(1,1000): pode resultar qualquer número 1,2, 3, ..., 100

Exemplo de uso da função randint()

Crie um programa em Python que simula o resultado de um dado, ou seja, gera números aleatórios de 1 até 6, quantas vezes o usuário desejar.

Como explicado, a primeira coisa é importar a biblioteca random, padrão do Python. Depois, simplesmente usar a função randint com 1 e 6 como argumentos, veja como fica:

import random

continuar=1
while continuar:
    print("Número aleatório gerado:", random.randint(1,6))
    continuar=int(input("Gerar novamente?\n1.Sim\n0.Não\n")


Definindo Melhor o Intervalo: randrange()

A função randrange é bem similar a função range (leia novamente esse tutorial para relembrar), exatamente a mesma maneira de se usar os parâmetros, a diferença que ela vai retornar apenas um valor.



  • Um argumento:
random.randrange(x) - vai gerar um número aleatório de 0 até x-1
Por exemplo:
random.randrange(5) - Pode retornar:0, 1, 2, 3 ou 4

  • Dois argumentos:
random.randrange(x,y) - vai gerar um número de x até y-1
Por exemplo:
random.randrange(1,5) - Pode sair:1, 2, 3 ou 4

  • Três argumentos:
 random.randrange(x,y,z) - Pode gerar de x até y-1, mas ao invés de 1 em 1, ela 'pula' de z em z, ou seja, z é o salto.

Por exemplo:
random.randrange(0,10,2) - Vai gerar uma dos seguintes números: 0, 2, 4, 6 ou 8 (ou seja, todos os pares de 0 até 8).

Para gerar todos os números múltiplos de 3 menores que 100, fazemos:
random.randrange(0, 101, 3) : 3, 6, 9, ..., 99

Gerar Número Aleatório Decimal: random()

Nos exemplos anteriores, as funções geram e recebem apenas números inteiros, ou seja, não servem para se trabalhar com números decimais.

Mas, e se a gente quiser um número quebrado aleatório?
Aí usamos a função random(), ela não recebe nenhum argumento.

Usou  ela, então te retorna decimal de 0.0 até 1.0
Basta fazer: random.random() e terá seu número quebrado aleatório.

Definir Aleatório Flutuante: função uniform()

Existe ainda mais uma função parar gerar valores flutuantes de maneira aleatória, que é através da função uniform().

Esta função recebe dois argumentos, um valor de início e outro final, podem ser valores float e te retorna um float aleatório.

Por exemplo, vamos supor que você é professor, tem que entregar a nota de 200 alunos e está totalmente sem saco.

Então você decide que vai dar notas aleatórias, de 5.0 até 10.0
Basta usar a função uniform:
random.uniform(5.0 , 10.0)

Pronto, ela vai te retornar uma nota rapidinho :D
Agora é curtir suas férias.

Caso tenha medo que algum aluno reclame, é só dizer 'olha, posso até recorrigir sua prova, mas se eu encontrar mais erros, eu abaixo sua nota).

Exercício Proposto

Crie um script em Python que gere 6 números aleatórios para a Mega-Sena (neste jogo, você pode escolher dezenas de 1 até 60). Não pode repetir dezena.

Deixe no comentário sua solução.

Um comentário:

  1. import random

    # Retorna a combinação completa de 6 valores, aleatórios e diferentes entre si.
    def combinacao():
    d1 = random.randrange(1, 56)
    d2 = random.randrange(d1 + 1, 57)
    d3 = random.randrange(d2 + 1, 58)
    d4 = random.randrange(d3 + 1, 59)
    d5 = random.randrange(d4 + 1, 60)
    d6 = random.randrange(d5 + 1, 61)
    return d1, d2, d3, d4, d5, d6

    while(True):
    print("\nGerando uma combinação para a Mega Sena...\n")

    print(" Combinação gerada: ", combinacao() )

    if(input("\nDigite 0 para continuar: ") != "0"):
    break

    ResponderExcluir