Open In App

rand vs normal in Numpy.random in Python

In this article, we will look into the principal difference between the Numpy.random.rand() method and the Numpy.random.normal() method in detail.

1D Array filled with random values : 
 [ 0.84503968  0.61570994  0.7619945   0.34994803  0.40113761]

Code 2 : Randomly constructing 1D array following Gaussian Distribution




# Python Program illustrating
# numpy.random.normal() method
   
import numpy as geek
   
# 1D Array
array = geek.random.normal(0.0, 1.0, 5)
print("1D Array filled with random values "
      "as per gaussian distribution : \n", array)
# 3D array
array = geek.random.normal(0.0, 1.0, (2, 1, 2))
print("\n\n3D Array filled with random values "
      "as per gaussian distribution : \n", array)

Output :

1D Array filled with random values as per gaussian distribution : 
 [-0.99013172 -1.52521808  0.37955684  0.57859283  1.34336863]

3D Array filled with random values as per gaussian distribution : 
 [[[-0.0320374   2.14977849]]

 [[ 0.3789585   0.17692125]]]


Code3 : Python Program illustrating graphical representation of random vs normal in NumPy




# Python Program illustrating
# graphical representation of 
# numpy.random.normal() method
# numpy.random.rand() method
   
import numpy as geek
import matplotlib.pyplot as plot
   
# 1D Array as per Gaussian Distribution
mean = 0 
std = 0.1
array = geek.random.normal(0, 0.1, 1000)
print("1D Array filled with random values "
      "as per gaussian distribution : \n", array);
  
# Source Code : 
# generated/numpy-random-normal-1.py
count, bins, ignored = plot.hist(array, 30, normed=True)
plot.plot(bins, 1/(std * geek.sqrt(2 * geek.pi)) *
          geek.exp( - (bins - mean)**2 / (2 * std**2) ),
          linewidth=2, color='r')
plot.show()
  
  
# 1D Array constructed Randomly
random_array = geek.random.rand(5)
print("1D Array filled with random values : \n", random_array)
  
plot.plot(random_array)
plot.show()

Output :

1D Array filled with random values as per gaussian distribution : 
 [ 0.12413355  0.01868444  0.08841698 ..., -0.01523021 -0.14621625
 -0.09157214]

1D Array filled with random values : [ 0.72654409 0.26955422 0.19500427 0.37178803 0.10196284]

Important :
In code 3, plot 1 clearly shows Gaussian Distribution as it is being created from the values generated through random.normal() method thus following Gaussian Distribution.
plot 2 doesn’t follow any distribution as it is being created from random values generated by random.rand() method.

Note :
Code 3 won’t run on online-ID. Please run them on your systems to explore the working.
.


Article Tags :