网库网(www.wangkuwang.com)精品网站源码,织梦建站模版,游戏源代码分享平台

模板户源码

当前位置:首页 -> CMS教程 -> 教程专栏 正文

Python random模块详解,指定分布类型的随机样本生成

时间:2019-03-18 07:55:59 [整站源码]作者:zhaopulei


舒畅 研模时光
点击上方蓝色文字关注↑↑↑↑↑

这一期我们将介绍Python中的random模块,我们在网上搜索Python random基本上只能看到说它是个随机数生成的模块,但是强大的random模块就如网上所说仅仅用来生成个随机数这么简单吗?今天我们就来详细地扒一扒这个random模块! 



1、random模块的内容

random module content


(1)多用途函数

(2)通用函数

(3)单变量分布函数

(4)多维分布函数

(5)标准分布函数

(6)内部函数



random模块里面的这么多函数看似复杂,其实细细分析一下,实现的功能也比较清晰和简单。主要分为以下几种:


1


多用途函数和通用函数基本实现两种功能:

生成随机数

随机排列


2


单变量分布函数、多变量分布函数和标准分布函数只有一个功能:

生成对应统计分布的随机样本


单变量分布函数就是只包含一个自变量的分布函数,比如常见的均匀分布(uniform)、正态分布(normal)、二项分布(binomial)、泊松分布(poisson)、指数分布(expone)、逻辑分布(logistic)、韦伯分布(weibull)和Beta分布。


多变量分布函数就是包含多个自变量的分布函数,比如多项分布(multinomial)、多维正态分布(multivariate normal)和通过Beta分布迭代生成的狄利克雷分布(dirichlet)。


标准分布函数就是标准化的分布。标准化有很多种方法,最常见的有:0-1标准化和均值-方差标准化。


0-1标准化就是一列数据的每个数都减去他的最小值再除以这列数据的极值得到新的一列数据。


均值-方差标准化就是指将一列数据的每个数都减去他的均值再除以标准差得到新的一列数据。


涉及统计分布的多是均值-方差标准化,以正态分布为例,如果一列数据服从正态分布N(mu, sigma^2),其中mu是均值,sigma^2是方差,则其标准化的数据则服从标准正态分布N(0,1)



2、随机数生成函数

random number


random模块的随机数生成函数有以下几种:

choice

randint

random_integers

random

random_sample

ranf

rand

randn

uniform

normal

进行随机排列的函数有:

permutation

shuffle

真是太繁琐了!其实细细分析下,这些函数很多功能被替代了,所以常用的也就那么几个。

1

choice

#在np.arange(5)中均匀抽取10个整数,返回一维数组

#在np.arange(5)中均匀抽取10个整数,返回二维数组

#在np.arange(5)中按照指定的概率分布抽取10个整数

#在指定的总体中按照给定的概率分布抽取

2

randint

#在np.arange(5)中均匀抽取10个整数,返回一维数组

#在np.arange(5)中均匀抽取10个整数,返回二维数组

#在np.arange(5, 10)中均匀抽取10个整数,返回二维数组

针对choice和randint有以下说明:

#说明1:random_integers()和randint()功能完全一样

#说明2:choice和randint的区别,choice能指定待选的数组和指定概率分布,randint只能给定上下限参数a和b,在np.arange(a, b)中选取,因此choice可以完全替代randint

3

random

##生成[0,1)中的1个均匀随机浮点数

#生成[0,1)中的5个均匀随机浮点数,返回一维数组

#生成[0,1)中的均匀随机浮点数,返回3行4列的二维数组

针对random函数有以下说明:

#说明:与这个函数作用完全相同的函数还有np.random.ranf()和np.random.random_sample()

4

rand和randn

#生成指定维度的[0,1}上的均匀随机数组,返回浮点数

#生成指定维度的[0,1}上的正态分布随机数组,返回浮点数

5

uniform和normal

#生成[a, b]上的均匀随机数组,返回浮点数

#生成均值为0,方差为25的整体随机数组,返回浮点数

针对uniform和normal有以下说明:

#说明:uniform和normal本质上是均匀分布和正态分布的样本生成函数,是对随机数生成函数rand和randn的扩展。

6

permutation随机排列

#随机排列np.arange(10)中的10个整数

#随机排列一个给定的数组里面的数

7

shuffle重新排列

#重新排列np.arange(10)中的10个整数

#重新排列一个给定的数组里面的数

注:permutation和shuffle随机排列有以下不同点

#不同点1:permutation可以传入一个整数,如10,将它自动识别为np.arange(10),而shuffle只能传入一个数组

#不同点2:permutation是对原数组进行随机排列,生成一个新的排列结果,不改变原数组,shuffle是直接对原数组进行排列,改变原数组

可以通过以下代码看出:

分析:通过以上实验可以发现,比较重要的随机函数就是choice、random、rand、randn、uniform和normal,比较重要的随机排列函数就是permutation和shuffle!



特定分布函数随机数

distribution random number


来自特定分布的随机函数有很多,只要知道具体的某个统计分布的性质就可以搞定了,所有的分布随机函数迭代都大同小异,只是分布参数不同而已,我们只举几个例子说明。


1

#生成正态分布随机数,并绘制直方图和密度函数


2

#生成gamma分布随机数,并绘制直方图和密度函数

3

#生成二维正态分布,一个二维正态分布由其均值向量和协方差矩阵确定,如下:

#以两个变量分别为横纵坐标进行绘图:

至此,作者基本上对random模块扒了个遍,欢迎指正错误!


总结

summary


本期推送的是python中numpy的random模块,主要有三种功能:生成简单随机数、进行随机排列和生成指定分布的随机数。其中最重要的随机数生成函数有choice、random、rand、randn、uniform和normal;随机排列函数有permutation和shuffle;统计分布函数分为单变量、多变量和标准分布。


需要说明的是这个模块的分布函数还是太基础,如果需要更复杂的分布需要参考R语言的相关包,详见前几期相关的推送内容!


【时间序列模型拾遗1】统计分布类型,黑天鹅的秘密?

统计分布的数值模拟和上证50ETF收益率序列的分布拟合



最后说明:欢迎转载公众号内容,但是请注明出处,之所以这么说就是因为有网站直接把公众号内容搬到了自己的网站上没有说明任何出处,还把最后的二维码给抹掉了!!


长按关注研模时光




  

    发送中

    本文标签:AutoTags插件服务端需要您提供购买者的账号和密码才能继续访问  折翼天使  莎莎源码  吾爱源码  其他源码 

    转载请注明来源:PHP手机端发卡多种支付商业版源码

    本文永久链接地址:https://www.suibianlu.com/11942.html

    郑重声明:
    本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
    若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
    如无法链接失效或侵犯版权,请给我们来信:admin@suibianlu.com

    栏目导航
    最新文章
    热门文章
    Top