import numpy as np
import scipy.stats as s
# normal distribution
# normal(mean, stdev, size)
heights = np.random.normal(188, 3, 10)
print heights
[ 182.67139438 192.17804988 190.09008635 186.57278872 194.03622068 191.88272193 183.61975607 186.97670622 187.82621993 189.9658577 ]
# binomial distribution
# binomial(n, p, size)
coinFlips = np.random.binomial(10, 0.5, 10)
print coinFlips
[4 6 5 6 7 3 4 6 5 6]
# normal density
x = np.linspace(-5, 5, num=10)
normalDensity = s.norm.pdf(x, 0, 1)
print np.around(normalDensity, decimals=2)
[ 0. 0. 0.01 0.1 0.34 0.34 0.1 0.01 0. 0. ]
# binomial density
x = np.arange(0, 11, 1) # note that it's (0, 11, 1) instead of (0, 10, 1)
binomialDensity = s.binom.pmf(x, 10, 0.5)
print np.around(binomialDensity, decimals=2)
[ 0. 0.01 0.04 0.12 0.21 0.25 0.21 0.12 0.04 0.01 0. ]
# 'sample' draws a random sample with and without replacement --> numpy.random.choice in numpy 1.7
heights = np.random.normal(188, 3, 10)
# with replacement
print 'random sampling with replacement:'
print np.random.choice(heights, size=10, replace=True, p=None)
# without replacement
print '\nrandom sampling without replacement'
print np.random.choice(heights, size=10, replace=False, p=None)
# sample according to a set of probability
probs = [0.4, 0.3, 0.2, 0.1, 0, 0, 0, 0, 0, 0]
print '\nrandom sampling with replacement according to a set of probability:'
print probs
print '\nsum of probabilities:'
print sum(probs)
print '\nsampled:'
print np.random.choice(heights, size=10, replace=True, p=probs)
random sampling with replacement: [ 188.51730245 187.57465384 187.7094007 187.34057076 189.44858637 187.57465384 188.51730245 184.62068782 187.57465384 189.4947812 ] random sampling without replacement [ 187.57465384 187.7094007 189.92494462 186.40851384 188.8397573 189.44858637 188.51730245 187.34057076 189.4947812 184.62068782] random sampling with replacement according to a set of probability: [0.4, 0.3, 0.2, 0.1, 0, 0, 0, 0, 0, 0] sum of probabilities: 1.0 sampled: [ 189.44858637 189.44858637 184.62068782 189.44858637 189.44858637 184.62068782 189.44858637 186.40851384 189.44858637 189.44858637]
# setting a seed
np.random.seed(12345)
print np.random.normal(0, 1, 5)
print '-------------------------------------------------------------'
np.random.seed(12345)
print np.random.normal(0, 1, 5)
[-0.20470766 0.47894334 -0.51943872 -0.5557303 1.96578057] ------------------------------------------------------------- [-0.20470766 0.47894334 -0.51943872 -0.5557303 1.96578057]