18

Eu gostaria de saber como gerar números aleatórios em Python. Estou com a versão 3.4.

3
  • É de muita valia notar que não é possível - ao menos no presente - gerar números aleatórios. O que geramos, quando falamos erroneamente números aleatórios, são números pseudo aleatórios. Veja mais aqui goo.gl/Vr6tPT e aqui goo.gl/2k1Fvg
    – José
    Commented 26/07/2015 às 20:04
  • 1
    Eu já sabia que são pseudo aleatórios, quando estava estudando C. Mas no dia-a-dia, são chamados aleatórios mesmo. Commented 29/07/2015 às 1:17
  • Daria se abrir o /deve/urandom
    – epx
    Commented 18/03/2018 às 21:29

6 Respostas 6

33
from random import randint
print(randint(0,9))

Isto gera números inteiros entre 0 e 9.

É possível usar diversas outras funções disponíveis na documentação. Cada uma pode ser melhor para o que você deseja.

from random import randrange, uniform
print(randrange(0, 9)) #faixa de inteiro
print(uniform(0, 9)) #faixa de ponto flutuante

Você pode importar tudo e usar o que deseja:

from random import *
random.seed() #inicia a semente dos número pseudo randômicos
random.randrange(0, 9, 2) # pares entre 0 e 9
random.choice('abcdefghij') # seleciona um dos elementos aleatoriamente
items = [1, 2, 3, 4, 5, 6, 7]
random.shuffle(items) # embaralha os itens aleatoriamente

Coloquei no GitHub para referência futura.

1
  • Quando tiver mais reputação, oferecerei alguns pontos de recompensa. Foi bastante útil. Commented 12/09/2015 às 2:20
13
from random import *
print random()
print uniform(10,20)
print randint(100,1000)
print randrange(100,1000,2)

random() retorna um float x tal que 0 <= x < 1.

uniform(10,20) retorna um float x tal que 10 <= x < 20.

randint(100,1000) retorna um inteiro x tal que 100 <= x < 1000.

randrange(100,1000,2) retorna um inteiro x tal que 100 <= x < 1000 e x é par

3
  • O que cada um desses códigos faz? Commented 24/07/2015 às 0:10
  • Atualizado @Mateus Souza
    – user28062
    Commented 24/07/2015 às 0:14
  • 2
    você sabe que usar from xxx import * não é considerarada uma boa prática, não? O roblema é que nem quem olha o código, nem ferramentas automáticas (IDEs) tem como saber de onde veio uma dada função que é encontrada no meio do código.
    – jsbueno
    Commented 26/07/2015 às 4:29
3

Não consigo comentar ainda por não ter pontuação para isso, mas randint inclui o último número, ao contrário de randrange, que funciona mais como o resto do Python (intervalo fechado no começo e aberto no fim). Logo, na resposta do lai0n, randint(100,1000) inclui o 1000 nas possibilidades. Pelo menos no Python 3.4, que é o que uso. Logo, randrange(a, b+1) é o mesmo que randint(a, b)

2

Deixo aqui uma função como sugestão, que gera números aleatórios (de 0.0 até 1.0) em um vetor com tamanho determinado:

def gerar():
   from random import random
   tamanho = int(input())
   resposta = [0.0] * tamanho
   for i in range(tamanho):
       resposta[i] = random()
   return resposta
2

Use o metodo Random combinado com alguma classe do mesmo. ex:

import random

num = int(input('O computador pensou em um numero entre 0 e 5, você é capaz de advinhar? '))
sorteio = random.randint(0, 5)

if num == sorteio:
    print('Parabens, o numero pensando pelo computador foi {}, o mesmo do seu!!!'.format(sorteio))
else:
    print('Que pena, você nao acertou!!')
0

Para gerar números aleatórios em Python 3, você pode usar a biblioteca "random". Aqui está um exemplo para gerar um número inteiro aleatório entre 0 e 9:

import random
print(random.randint(0, 9))

Você também pode gerar números flutuantes aleatórios com a função "random.uniform()", por exemplo:

import random
print(random.uniform(0, 1))

Caso queira especificar a precisão, você pode usar a biblioteca "decimal" para especificar a precisão do número flutuante gerado pelo random.uniform(). Por exemplo, aqui está como gerar um número flutuante aleatório com duas casas decimais:

import random
import decimal

D = decimal.Decimal

def random_float_with_precision(precision=2):
    # Escolha um número flutuante aleatório no intervalo [0, 1)
    random_float = random.uniform(0, 1)
    # Formate o número com a precisão desejada
    formatted_float = format(D(random_float), f'.{precision}f')
    return float(formatted_float)

print(random_float_with_precision())

Você deve fazer log-in para responder a esta pergunta.

Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .