Numpy生成随机数及服从常见分布的随机数

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次的概率

P ( X = 3 ) = C 10 3 0. 5 3 ( 1 0.5 ) 7 = 0.1171875 P\left( X=3 \right) =C_{10}^{3}0.5^3\left( 1-0.5 \right) ^7=0.1171875

# 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)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ddjhpxs/article/details/107766742