In an earlier post we have seen *What is NumPy?*

We have also seen ** Features of NumPy**,

**We have worked with**

*Need for NumPy?***.**

*Array Functionalities using NumPy*Let us look into some more Functionalities provided by NumPy.

**Random Sampling in NumPy**

In addition with built-in functions, NumPy also comes with a random sub-module which provides functions to generate data randomly and draw samples from various distributions.

Let see some of these functions.

:*rand([d0,d1,….,dn])*

It is used to create an array of given shape and populate it with random samples from* a uniform distribution* over [0,1].If no arguments are provided it will return a single float value. Only positive arguments are taken by rand.

#generating single random number

*a = np.random.rand()*

*$o/p : 0.88767776*

#generating 1D array with random values

*a = np.random.rand(5)*

*$o/p : array([0.12345,0.23456,0.2131233,0.1241324,0.2133344])*

# generating 2D array

*a = np.random.rand(2,2)*

*$o/p : array([[0.99876,0.97657],[0.8766544,0.567433]]) *

*randn([d0,d1,….,dn]):*

It is used to create an array of given shape and populate it with random samples from *a standard normal distributions*.It generates an array of shape(d0,d1,….,dn) with random floats sampled from univariate normal distribution of mean 0 and variance 1. It takes only positive arguments. If no argument is passed, a single float value is returned.

#generating single random number

*a = np.random.randn()*

*$o/p : 0.88767776*

# generating 2D array

*a = np.random.randn(2,2)*

*$o/p : array([[0.99876,-0.97657],[-0.8766544,0.567433]]) *

*randint(low,high=None,size=None):*

It returns a random integer from a *discrete uniform distribution* with limits of *low*(inclusive) and *high*(exclusive). If high is not passed i.e None(default) then results are from 0 to low. If *size *is specified it returns an array of specified size.

#generating a random integer between 0 and 5

*a = np.random.randint(5)*

*$o/p : 3*

#generating a random integer between 2 and 7

*a = np.random.randint(2,7)*

*$o/p : 4*

#generating a 1D array

*a = np.random.randint(2,5,size=2)*

*$o/p : array([3,4])*

#generating a 2D array

*a = np.random.randint(3,9,size=(2,3))*

*$o/p : array([[7,4,6],[5,8,6]])*

*random(size=None):*

It returns a random float value between 0 and 1 from *continuous uniform distribution*.

#generating single random number

*a = np.random.random()*

*$o/p : 0.88767776*

#generating 1D array with random values

*a = np.random.random(5)*

*$o/p : array([0.12345,0.23456,0.2131233,0.1241324,0.2133344])*

# generating 2D array

*a = np.random.random(2,2)*

*$o/p : array([[0.99876,0.97657],[0.8766544,0.567433]]) *

*normal(mu=0.0,sigma=1.0,size=None):*

It returns random samples from *a normal (Gaussian) distribution*. If no arguments are passed, a sample will be drawn from N(0,1).

#generating samples from 1D array

*a = np.random.normal(0,0.1,5)*

*$o/p : array([0.12345,-0.23456,0.2131233,-0.1241324,0.2133344])*

:*uniform(low=0.0,high=1.0,size=None)*

It returns samples from *a uniform distribution* over interval 0(inclusive) and 1(exclusive) if arguments are not provided.

#creating 1D array under [-1,0]

*a = np.random.uniform(-1,0,5)*

*$o/p : array([-0.12345,-0.23456,-0.2131233,-0.1241324,-0.2133344])*

:*binomial(n,p,size=None)*

It returns samples drawn from *binomial distribution* with n trials and p probability of success where n is greater than 0 and p under [0,1]

#coin flip for 10 times

*Samples = np.random.binomial(1,0.5,10)*

*$o/p : array([1,1,0,1,0,0,1,0,1,1,0])*

More on NumPy in upcoming posts.

Happy Learning!