randrange(start, stop)
leva apenas argumentos inteiros. Então, como eu obteria um número aleatório entre dois valores flutuantes?
python
random
floating-point
Mantis Toboggan
fonte
fonte
np.random.uniform(start, stop)
ounp.random.uniform(start, stop, samples)
se você queria várias amostras. Caso contrário, as respostas abaixo são as melhores.Respostas:
Use random.uniform (a, b) :
fonte
Returns a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a
Em outras palavras, a saídaN
pode ser igual a entradaa
eb
. Nesse caso1.5
e1.9
..uniform
função, mas usando.random
ourandrange
?1.5 + random.random() * (1.9 - 1.5)
deve fazê-lo, embora de acordo com as especificações isso nunca retorne exatamente1.9
(mesmo em teoria).uniform(a, b)
é implementadoa + (b-a) * random()
e retorna um número aleatório no intervalo [a, b) ou [a, b] dependendo do arredondamento github.com/python/cpython/blob/…random.uniform(a, b)
parece ser o que você está procurando. Dos documentos:Veja aqui .
fonte
se você deseja gerar uma flutuação aleatória com N dígitos à direita do ponto, você pode fazer isso:
o segundo argumento é o número de casas decimais.
fonte
Geralmente, você usaria:
Python fornece outras distribuições, se você precisar.
Se você tem
numpy
importou, poderá usar seu equivalente:Novamente, se você precisar de outra distribuição,
numpy
forneça as mesmas distribuições que o python, além de muitas outras .fonte