randrange(start, stop)
only takes integer arguments. So how would I get a random number between two float values?
2021-01-13
python – How to get a random number between a float range?
The Question :
470 people think this question is useful
The Question Comments :
- If you wanted numpy it’s
np.random.uniform(start, stop)
ornp.random.uniform(start, stop, samples)
if you wanted multiple samples. Otherwise below answers are best.
The Answer 1
724 people think this answer is useful
Use random.uniform(a, b):
>>> random.uniform(1.5, 1.9) 1.8733202628557872
The Answer 2
81 people think this answer is useful
random.uniform(a, b)
appears to be what your looking for. From the docs:
Return a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a.
See here.
The Answer 3
68 people think this answer is useful
if you want generate a random float with N digits to the right of point, you can make this :
round(random.uniform(1,2), N)
the second argument is the number of decimals.
The Answer 4
6 people think this answer is useful
Most commonly, you’d use:
import random random.uniform(a, b) # range [a, b) or [a, b] depending on floating-point rounding
Python provides other distributions if you need.
If you have numpy
imported already, you can used its equivalent:
import numpy as np np.random.uniform(a, b) # range [a, b)
Again, if you need another distribution, numpy
provides the same distributions as python, as well as many additional ones.