from numpy import random
import seaborn as sns
普通随机数
random.randint 返回给定范围内的随机整数
# 只给一个参数时,范围是[0,10)
random.randint(10)
2
# 指定low,high:[0,10)
random.randint(0,10)
5
# 指定size,可扩充至多维
random.randint(0,10,size=(1,10))
array([[0, 4, 3, 4, 6, 0, 5, 2, 8, 7]])
x = random.randint(100,size=100000)
sns.distplot(x)
random.randn 返回服从标准正态分布的样本
# 不传入任何参数,默认返回一个值
random.randn()
1.4169243713383364
# 指定维度,可扩充至多维
random.randn(3,2)
array([[ 1.09583243, -0.40442456],
[-0.29741286, 0.05130346],
[-0.56268014, 0.95658068]])
x = random.randn(100000)
sns.distplot(x)
random.rand 返回[0,1)间服从均匀分布的随机浮点数
# 不传入任何参数,默认返回一个值
random.rand()
0.8734043438489021
# 指定维度,可扩充至多维
random.rand(3,2)
array([[0.48914648, 0.14287795],
[0.42747664, 0.70037852],
[0.21908917, 0.37763615]])
x = random.rand(100000)
sns.distplot(x)
random.random 同random.rand
random.uniform 返回给定范围内服从均匀分布的随机浮点数
# 不传入任何参数,默认范围[0,1)
random.uniform()
0.40282013087350854
# 指定范围与维度
random.uniform(1,10,(2,3))
array([[4.96069907, 5.60923536, 8.4463417 ],
[4.11765915, 1.28295035, 7.24735666]])
x = random.uniform(size=100000)
sns.distplot(x)
常见分布及随机数
from numpy import random
import numpy as np
import seaborn as sns
均匀分布 random.uniform
x = random.uniform(size=10000)
sns.distplot(x)
二项分布 random.binomial
返回给定p的n次伯努利实验中发生的次数
random.binomial(10,0.5)
6
举例:10次抛硬币中,正面朝上出现3次的概率
# size越大越接近真实值
sum(random.binomial(n=10, p=0.5, size=1000000) == 3) / 1000000
0.117357
指数分布 random.exponential
# scale表示指数分布的均值,λ=1/scale
random.exponential(scale=0.2, size=10000).mean()
0.20024636642497326
# 方差
(random.exponential(scale=0.2, size=10000).std()) ** 2
0.040249871372003504
x = random.exponential(0.2, 10000)
sns.distplot(x)
几何分布 random.geometric
模拟伯努利实验中,在给定发生概率下为了取得成功所需要的试验次数
random.geometric(p=0.5)
2
标准正态分布 random.standard_normal
与random.randn类似
x = random.standard_normal(10000)
sns.distplot(x)
泊松分布 random.poisson
random.poisson(lam=2, size=10000).mean()
2.0033
# 方差
(random.poisson(lam=2, size=10000).std()) ** 2
2.0212654399999996
卡方分布 random.chisquare
# df表示自由度
random.chisquare(df=10, size=10000).mean()
10.001857591364118
# 方差
(random.chisquare(df=10, size=10000).std()) ** 2
20.09191993229254
x = random.chisquare(df=10, size=10000)
sns.distplot(x)
F分布 random.f
random.f(dfnum=1, dfden=2)
1.468651814861976
x = random.f(dfnum=3, dfden=10, size=10000)
sns.distplot(x)