How to Generate Random Float numbers in Python using random and uniform() functions?

By | January 19, 2022
How to Generate Random Float numbers in Python using random and uniform() functions

Python comes with a built-in random module to generate random numbers. The random module provides various methods and properties that can generate random integer as well as float numbers. In this tutorial, we will walk through two of the random module’s methods random() and uniform(),  and learn how to generate random float numbers.

So let’s get started.

Generate a Random float number between 0 and 1

To generate a random float number between 0 and 1 we can use the random.random() function. The random.random() function does not accept any argument value and return a random number between the interval [0.0,  1.0).

Example 1

Let’s print 5 random float numbers between 0 to 1.0 using the random.random() function.

import random

for i in range(5):
    #print the random float number 
    print(random.random())

Output

0.6312659793400986
0.9704219134108379
0.00036539975574878536
0.46369616712594597
0.0903899194196851

Example 2

The random() function only generates a random float number between 0.0 and 1.0, to generate a random number from 0.0 up to n we have to multiply the generated random float number with n. 

Let’s generate 5 random float numbers between 0.0 to n, using the random() function.

import random

n= 10

for i in range(5):
    #print the random float number  between [0.0, 10.0)
    print(random.random()*10)

Output

0.5505126025099993
7.220282428167762
6.040232673473125
0.26924706557892475
7.222115542734079

Example 3

In the above example by multiplying the random number by we can set the upper range for the random float number but the lower limit will remain 0.

Vamware

To get a random float number between two given interval or ranges we can use the following formula or the random.uniform(start, stop) function (that we will see in the next section).

 start+(stop-start) * random()

Let’s write a Python script that generates 5 random float numbers between 10 and 100

Vamware
import random

start = 10

stop = 100

for i in range(5):
    random_number = start +(stop-start)*random.random()
    print(random_number)

Output

67.59361905855519
37.40223222454098
16.661157110370347
30.848616703550597
15.412873019184778

Get a random float number within a given range using random.uniform() function

To generate a random float number between two specified ranges, we can use the random.uniform(start, stop) function.

This function accepts two arguments start and stop, and return a randomly generated floating point Number N i.e. equal to and greater than the start, and equal and less than stop (start <= N <= stop) for start < stop.

If the start is greater than stop it will return a float number N i.e stop<= N <=start.

Syntax

random.uniform(start, stop)

Example

Let’s write a Python script that generates 5 random floating-point numbers between 10, and 100

import random

start = 10
stop  = 100
for i in range(5):
    #print the random float number  between 10 and 100
    print(random.uniform(start, stop))

Output

79.07855385994228
56.168706207632354
24.18532011207759
75.99995810143452
88.35876424124737

Example 2

We can also generate negative random float numbers.

Vamware
import random

start = -100
stop  = -10
for i in range(5):
    #print the random float number  between -100 and -10
    print(random.uniform(start, stop))

Output

-88.85369709089807
-94.43232163361664
-32.509935301182566
-22.05378635574631
-24.49232345044136

Generate a random floating point number up to n decimal point

In the above example, the randomly generated floating points numbers have more than 10 decimal places, to reduce it up to 2 or 3 we can use the Python’s round() function.

Example

import random

start = 10
stop  = 100
for i in range(5):
    random_number = random.uniform(start, stop)
    #limit the floating point number precision upto 2 decimal places 
    print(f"Random Number {i}: ", round(random_number,2))

Output

Random Number 0: 63.27
Random Number 1: 52.98
Random Number 2: 97.51
Random Number 3: 15.92
Random Number 4: 49.38

Generate a List of random float numbers

Let’s say you want to initialize a Python list with a fixed number of random floating-point numbers how would you do that?

To generate a list of random float numbers we can use the random.uniform() function inside a for loop and append the generated random number to the empty list.

Example

import random

start = 10
stop = 100

#empty list
random_list = []
size = 10

for i in range(size):
    #generate random flaot number
    random_number = random.uniform(start, stop)

    #round the decimal numbers upto 2 places
    random_number = round(random_number, 2) 

    #append the number to the list
    random_list.append(random_number)
    
print(random_list)

Output

[23.12, 28.09, 44.16, 81.88, 10.95, 74.03, 26.96, 92.63, 79.95, 18.03]

Generate a Random list of unique float numbers

In the above example, we see how can we generate a list of random float numbers, but there is a chance that the list may contain duplicate float numbers.

To generate a list of unique random float numbers we have to put more logic inside the loop while appending the randomly generated float number to the list.

Example

import random

start = 10
stop = 100

#empty list
random_list = []
size = 10

while size>0:
    #random number between 10 and 100
    random_number = random.uniform(10, 100)

    #if generated number is not in random_list
    #append the number to the list
    if random_number not in random_list:
        random_list.append(random_number)
        
        #decrement the size by 1
        size -= 1
    else:
        continue

print("Your unique random list of float numbers is:", random_list)

Output

Your unique random list of float numbers is: [97.6, 72.03, 79.63, 33.04, 67.06, 82.74, 14.11, 42.25, 80.55, 33.82]

The above program will always print a random list of unique float numbers.

Random float numbers using Numpy

Generate an array of random numbers using Numpy

The numpy module has a dedicated class to create random number values.

To generate a random array of float numbers using numpy, we can use the numpy’s random.rand() function

syntax

import numpy as np
np.random.rand(d0,d1,...dn)

The random.rand() function returns a random specified shape (d0, d1, …, dn) ndarray of float number between the interval [0,1).

Example 1

Create a one-dimensional array of random float numbers between the range 0 to 100.

import numpy as np

size = 10

#one dimensional array from range 0.0 to 99.99
array = np.random.rand(size)*100 

print(array)

Output

[78.25982545 22.2798724 94.55801986 31.03170587 20.01110123 6.45872563
33.63354877 74.94266594 77.21550284 38.55932404]

The random.rand() function will only generate an array of random float numbers between 0 and 1. To increase the range from 1 to 100 we have to multiple the array with 100, as we have done in this example.

Example 2

Generate a two-dimensional array of random float numbers between the range 0 to 100.

import numpy as np

rows = 4
columns = 4

#one dimensional array from range [0, 100)
array = np.random.rand(rows, columns)*100 

print(array)

Output

[[62.15513195 34.60915347 37.93933137 81.01277555]
[28.04085858 12.26928112 35.46122637 44.94658332]
[94.50469169 73.17002235 19.991989 85.31803832]
[11.89249045 29.61793772 71.28479511 66.80166957]]

Conclusion

In this Python tutorial, we learned the different techniques to generate random float numbers in Python.

The first method we discussed was random.random() function that returns a random number between 0.0 to 1.0 where 1.0 is not included. But with some logic, we can also specify the start and stop ranges and use the random.random() function to generate a random number between two ranges.

The other method we discussed was random.uniform(start, stop) function, which allows us to specify the range for the random float number.

People are also reading:

Author: Vinay Singh

I am a Full Stack Developer with a Bachelor's Degree in Computer Science, who also loves to write technical articles that can help fellow developers.

Leave a Reply

Your email address will not be published.