(四)用random模块生成各种分布的随机数

random模块中金融领域常用分布函数

numpy.random.beta
numpy.random.binomial
numpy.random.chisquare(卡方分布)
numpy.random.exponential
numpy.random.f
numpy.random.gamma
numpy.random.geometric
numpy.random.lognormal
numpy.random.multivariate_normal(多元正态分布)
numpy.random.pareto
numpy.random.poisson
numpy.random.power(指数分布)
numpy.random.standard_t(t分布)
numpy.random.normal
numpy.random.randn(标准正态分布,可定义维度)
numpy.random.standard_normal(标准正态分布,不可定义维度)
numpy.random.rand(标准均匀分布)
numpy.random.randint(均匀分布,给定区间内抽取整数)
numpy.random.uniform(任意区间的均匀分布)

β分布

1、可用来刻画银行贷款违约回收率,有两个参数α和β,size表示抽取随机数的个数;
2、size不写默认为1,size也可用多维表示
3、参数名称可省略

>>> import numpy.random as npr
>>> beta=npr.beta(a=2,b=4,size=10000)
>>> print(beta.mean(),beta.std())
0.33310797251028923 0.1766576703083821

卡方分布

可用于刻画保单索赔金额,df表示自由度,size是抽取个数

>>> x=npr.chisquare(df=4,size=10000)
>>> print(x.mean(),x.std())
3.9848330295046677 2.8230233856316285

F分布

前两个参数代表自由度n1和n2,size同理

>>> f=npr.f(dfnum=6,dfden=8);f
3.966614282489191

对数正态分布

可用于刻画股票收益率。变量的对数服从正态分布,参数分别为均值、标准差和size

xlog=npr.lognormal(0.5,1,(2,3));xlog		       
array([[0.67216224, 0.67250885, 0.65827427],
       [0.58681578, 2.40758209, 0.27557731]])

正态分布与标准正态分布

变量服从正态分布,参数分别为均值、标准差和size

>>> xnor=npr.normal(0,1,1000)		       
>>> print(xnor.mean(),xnor.std())		       
0.0186942322604807 1.0069583077954158
>>> 

变量服从标准正态分布,还可用randn和standard_normal,参数均为size,但是randn可生成多维

>>>snor=npr.randn(2,3);snor	       
array([[-0.29098965,  1.41606237, -0.37613379],
       [-0.26822167,  1.29213016, -0.37025113]])
>>>snor1=npr.standard_normal(6);snor1	       
array([ 1.27020406, -0.58505078, -0.88146249, -0.16921353, -1.07142416,
       -0.16886138])
>>> snor2=npr.standard_normal(10000)	       
>>> print(snor2.mean(),snor2.std())	       
-0.001636269023124208 1.0039272342265035

t分布

参数分别为自由度和size,自由度越大t分布越接近于标准正态分布

>>> t=npr.standard_t(200,1000)	       
>>> print(t.mean(),t.std())	       
-0.00527027933254543 1.0066469571435286

均匀分布

1、rand(d0,d1,…dn)函数用于在给定维度数组中加入在[0,1)之间服从均匀分布的随机样本;
2、randint(low, high,size)返回随机整数,范围区间为[low,high);
3、uniform(low,high,size)从一个均匀分布[low,high)中随机采样。

>>> a=npr.rand(2,3);a		       
array([[0.58316103, 0.729972  , 0.61602387],
       [0.58347881, 0.83084338, 0.12654253]])
>>> b=npr.randint(1,20,10);b		       
array([16,  4, 19,  7,  3,  3,  6,  1, 11, 17])
>>> c=npr.uniform(1,20,(2,5));c		  
array([[ 4.20412068, 14.64988062, 14.09626989, 12.39333325, 19.34367783],
       [11.55343021,  4.81221372,  4.48002327,  4.05814398, 14.88917283]])
发布了31 篇原创文章 · 获赞 2 · 访问量 1619

猜你喜欢

转载自blog.csdn.net/hzk427/article/details/103835338