Eu gostaria de saber como gerar números aleatórios em Python. Estou com a versão 3.4.
-
É 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
-
1Eu já sabia que são pseudo aleatórios, quando estava estudando C. Mas no dia-a-dia, são chamados aleatórios mesmo.– Mateus SouzaCommented 29/07/2015 às 1:17
-
Daria se abrir o /deve/urandom– epxCommented 18/03/2018 às 21:29
6 Respostas
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
-
Quando tiver mais reputação, oferecerei alguns pontos de recompensa. Foi bastante útil. Commented 12/09/2015 às 2:20
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
-
-
Atualizado @Mateus Souza– user28062Commented 24/07/2015 às 0:14
-
2você 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.– jsbuenoCommented 26/07/2015 às 4:29
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)
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
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!!')
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())