Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The random number generator in numpy

Tags:

ipython

numpy

I am using the numpy.random.randnand numpy.random.randto generate random numbers. I am confusing about the difference between random.randn and random.rand?

like image 436
Michael Ji Avatar asked Jan 30 '26 01:01

Michael Ji


1 Answers

The main difference between the two is mentioned in the docs. Links to Doc rand and Doc randn

For numpy.rand, you get random values generated from a uniform distribution within 0 - 1

But for numpy.randn you get random values generated from a normal distribution, with mean 0 and variance 1.

Just a small example.

>>> import numpy as np
>>> np.random.rand(10)
array([ 0.63067838,  0.61371053,  0.62025104,  0.42751699,  0.22862483,
        0.75287427,  0.90339087,  0.06643259,  0.17352284,  0.58213108])
>>> np.random.randn(10)
array([ 0.19972981, -0.35193746, -0.62164336,  2.22596365,  0.88984545,
       -0.28463902,  1.00123501,  1.76429108, -2.5511792 ,  0.09671888])
>>> 

As you can see that rand gives me values within 0-1,

whereas randn gives me values with mean == 0 and variance == 1

To explain further, let me generate a large enough sample:

>>> a = np.random.rand(100)
>>> b = np.random.randn(100)
>>> np.mean(a)
0.50570149531258946
>>> np.mean(b)
-0.010864958465191673
>>>

you can see that the mean of a is close to 0.50, which was generated using rand. The mean of b on the other hand is close to 0.0, which was generated using randn

like image 80
Srivatsan Avatar answered Feb 01 '26 21:02

Srivatsan



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!