randrange(start, stop)
only takes integer arguments. So how would I get a random number between two float values?
np.random.uniform(start, stop)
or np.random.uniform(start, stop, samples)
if you wanted multiple samples. Otherwise below answers are best.
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.
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.
From my experience dealing with python, I can only say that the random function can help in generating random float numbers. Take the example below;
import random
# Random float number between range 15.5 to 80.5
print(random.uniform(15.5, 80.5))
# between 10 and 100
print(random.uniform(10, 100))
The random.uniform() function returns a random floating-point number between a given range in Python
The two sets of code generates random float numbers. You can try experimenting with it to give you what you want.
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.
Use this to get random floating point number between range n to m:
import random
random.uniform(n,m)
If you want to get a random float number up to x decimal places you can use this instead:
import random
round(random.uniform(n, m), x)
Success story sharing
Returns a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a
In other words the outputN
can equal either inputa
andb
. In this case1.5
and1.9
..uniform
function, but instead with either.random
orrandrange
?1.5 + random.random() * (1.9 - 1.5)
should do it, even though according to the specs this will never return exactly1.9
(even in theory).uniform(a, b)
is implemented asa + (b-a) * random()
and returns a random number in the range [a, b) or [a, b] depending on rounding github.com/python/cpython/blob/…