对数正态分布(对数正态分布是左偏态分布)

2022-06-13 01:25:16 发布:网友投稿
热度:57

对数正态分布(对数正态分布是左偏分布)

在实际开发中,经常使用随机数生成。随机库专用于随机数的生成。它提供了一种基于默森扭转算法的快速伪随机数发生器。

本章将详细解释随机数生成在各种场景中的应用。

生成随机数

对于随机数的生成,随机库提供了很多功能,有的负责生成浮点数,有的负责生成整数,有的可以间隔生成随机数。

函数名

参数

意义

随意

无参数

随机生成介于[0-1]之间的浮点数

制服

两个整数参数:最小数量和最大数量

随机生成介于最小值和最大值之间的浮点数。

randint

两个整数参数:最小数量和最大数量

生成介于最小值和最大值之间的随机整数。

随机范围

三个整数参数:最小数量、最大数量和步长。

生成介于最小值和最大值之间的随机间隔步长整数。

接下来,让我们看看这些常用随机数生成函数的应用:

importrandom#随机生成[0-1]之间浮点数print("%04.2f"%random.random())#随机生成浮点数print("%04.2f"%random.uniform(100,200))#随机生成整型print(random.randint(1,200))#随机生成整型print(random.randrange(0,200,5))

运行后,效果如下:

以上就是随机数最常见最常用的用法。

种子

不知道读者有没有发现。虽然上述方法可以生成随机数,但随机数是无序的。您的跑步可能以一个数字开始,以一个数字结束,下一次跑步的开始和结束会有所不同。这显然不适合需要固定序列的随机数要求。

因此,随机库为我们提供了一个种子函数:random.seed()。种子将控制公式生成的第一个值。因为公式是确定的,只要每次种子都是一样的,那么随机数生成的序列值每次都会是一样的。

importrandomrandom.seed(1)#随机生成浮点数print("%04.2f"%random.random())#随机生成浮点数print("%04.2f"%random.uniform(100,200))#随机生成整型print(random.randint(1,200))#随机生成整型print(random.randrange(0,200,5))

将上面的代码运行几次,你会发现随机数每次都是一样的。

随机样本

博主经常写脚本刷评论,但是对于爬虫来说,有一个唯一的随机数要求。例如,如果我想评论20页,那么如果我把20页放在数组中,就会有(0,19)个索引可供选择。如果使用普通的区间随机数,可能会漏掉一些值,也就是说也会漏掉一些没有注释的网页。

这时候博主肯定期望在(0,19)区间生成一个随机数样本,不再重复。确保重复评论完成后没有网页丢失。那么如何用随机库操作这个需求呢?

当然,副标题已经给出了答案。您可以使用random.sample()函数:

importrandomprint(random.sample(range(0,20),20))

运行后,效果如下:

random.sample的第一个参数是区间数组,例如,如果随机数是(0,19),那么第一个参数是Range (0,19);第二个是生成了多少个不重复的随机数。在这里,所有的网页都需要注释,所以生成了20个随机数。可以看出上面所有的随机数都是不重复的,都在区间内且唯一。(这个功能也可以用来分发扑克牌,感兴趣的读者可以自己编写代码,熟练掌握。)

随机元素

在概率统计中,我们经常用随机数来预测概率,比如硬币朝上的概率等。如果这个计算概率的随机元素运算是用随机数实现的呢?

答案是random.choice()函数,它可以从序列中随机选择元素。这里举个例子,我们掷一个硬币10000次,看看每一面朝上的概率是多少。具体代码如下:

importrandomcoin_pro={'heads':0,'tails':0,}coin=['heads','tails']foriinrange(10000):coin_pro[random.choice(coin)]+=1print("正面朝上次数:",coin_pro['heads'])print("反面朝上次数:",coin_pro['tails'])

运行后,我们会得到次数,这样我们也可以计算概率。

系统随机

随机库下还有一个SystemRandom类,这个类生成的序列是不可再生的,因为它的随机性是跟随系统的,而不是来自软件本身。

让我们先看一段代码:

importrandomimporttimer1=random.SystemRandom()print(r1.random())seed=time.time()r1=random.SystemRandom(seed)print(r1.random())

运行后,效果如下:

您可以简单地将SystemRandom理解为由系统时间因子生成的随机数。(只是一个类比),也就是上面的种子因子根本不起作用,它只使用了系统的随机种子。

不均匀分布

使用numpy库的读者应该经常使用它来生成一些正态分布的值。同样,随机随机数库也为科学计算提供了这些分布的功能。接下来,让我们解释一下这些随机数是如何生成的。

功能

意义

betavariate()

根据Beta分布(用于统计)返回0到1之间的随机浮点数

expovariate()

根据指数分布(用于统计信息),返回一个介于0和1之间或介于0和-1之间的随机浮点数(如果参数为负)。

gammavariate()

根据伽玛分布(用于统计信息)返回0到1之间的随机浮点数

高斯()

根据高斯分布(用于概率论)返回0到1之间的随机浮点数

lognormvariate()

根据对数正态分布(用于概率论)返回0到1之间的随机浮点数。

常态变量()

根据正态分布返回0到1之间的随机浮点数(用于概率论)。

vonmisesvariate()

根据冯·米塞斯分布(用于方向统计)返回0到1之间的随机浮点数

paretovariate()

根据帕累托分布(用于概率论)返回0到1之间的随机浮点数

weibullvariate()

根据威布尔分布(用于统计信息)返回0到1之间的随机浮点数

正态分布

随机库提供函数normalvariate()和gauss()来生成正态分布随机数(高斯分布)。当然还有另外一个函数lognormvary()也可以生成正态分布,但是它生成的正态分布适用于几个非交互随机变量的乘积。

importrandomforiinrange(2):print(random.normalvariate(0,1))foriinrange(2):print(random.gauss(0,1))

运行后,效果如下:

上面有两个参数:均值和协方差。平均值是N维空中的坐标,表示最有可能生成样本的位置。这类似于一维或单变量正态分布的钟形曲线的峰值。协方差代表两个变量一起变化的水平。

近似分布

三角分布,又称辛普森分布或三角分布。在概率论和统计学中,三角分布是一种下限为A,模式为C,上限为b的连续概率分布。

三角()方法返回两个指定数字(包括两个)之间的随机浮点数,但是您也可以指定第三个参数,即mode参数。模式参数让您有机会权衡可能的结果,并使它们更接近其他两个参数值之一。模式参数默认为其他两个参数值之间的中点,它不会在任何方向上权衡可能的结果。

importrandomprint(random.triangular(20,60,30))

运行后,效果如下:

其他感兴趣的功能可以自己研究。

下一篇:许愿池的希腊少女(许愿池的希腊少女故事)
上一篇:婚纱礼服图片(在选择婚纱时,该怎样挑选适合自己的婚纱呢)