`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)`

or`np.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.