python内置的random库主要用于产生各种伪随机数序列,python random随机数
本文主要详细介绍Python伪随机数模块random。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下,希望能帮到你。
目录
随机模块random.seed常见整数随机函数、常见序列随机函数和常见实随机函数概述
random模块
该模块实现了各种分布式伪随机数发生器。(包括计算实数轴上的均匀分布、正态分布(高斯分布)、对数正态分布、负指数分布、伽玛分布和贝塔分布的函数)此模块的伪随机生成器不应用于安全目的。出于安全或加密目的,请使用secrets模块。
关于随机模块的更多细节,请参考官方文档Random-Generate Pseudo-Random Numbers。
以下是该模块的一些常用功能。
random.seed
random . seed(a=无,版本=2)
初始化随机数生成器,如果A被省略或没有,则使用当前系统时间。如果操作系统提供随机源,使用它们而不是系统时间。当你的种子相同时,你从多次执行中得到的随机数序列是相同的。由于Mersenne Twister的完全确定性,由随机模块生成的随机数不适合用于加密目的。
常用整数随机函数
random.randrange(停止)
random.randrange(开始,停止[,步进])
Range()返回在[开始,停止]范围内随机选择的元素。
random.randint
返回满足a=n=b的随机整数n。等效于randrange(a,b 1)。
常用序列随机函数
随机选择(序列)
从非空序列seq中返回一个随机元素。如果seq为空,则抛出IndexError。
随机洗牌(x[,随机])
对序列x进行随机置乱,(在原序列上做,不会产生新的序列。)
可选参数random是在[0.0,1.0]中返回随机浮点数的函数;默认情况下,它是random.random()函数。
random.sample(总体,k,*,计数=无)
返回从整个序列或集合中选择的长度为K的唯一元素列表。用于无重复的随机采样。下面是一个抽奖的例子。
3万人参与Python编程活动,然后有1000人入选奖励。其中,一等奖20名,二等奖30名,三等奖50名,四等奖200名,五等奖700名。
上面的抽奖可以用下面的代码完成。
res=random.sample(范围(1,30001),1000)
打印(一等奖列表3360 ,RES [:20])
打印(二等奖列表3360 ,RES [20:50])
打印(三等奖列表3360 ,RES [50:100])
打印(四等奖列表3360 ,RES [100:300])
打印(五等奖列表3360 ,RES [300:])
此外,如此产生的彩票结果也将是可控的。比如我们需要3号一等奖,33号二等奖,333号三等奖,代码如下:
all_list=[x for x in range(1,30001) if x not in[3,33,333]]
res=random.sample(all_list,997)
#黑箱操作
Res.insert (random.randint (0,10),3) #将第3名加入前10名
Res.insert (random.randint (30,40),33)# Blend 33号介于30和40之间
Res.insert (random.randint (70,90),333) # Dope 333介于70和90之间。
打印(一等奖列表3360 ,RES [:20])
打印(二等奖列表3360 ,RES [20:50])
打印(三等奖列表3360 ,RES [50:100])
打印(四等奖列表3360 ,RES [100:300])
打印(五等奖列表3360 ,RES [300:])
常用实数随机函数
随机. random()
返回[0.0,1.0]范围内的下一个随机浮点数。
随机均匀(a,b)
返回一个随机浮点数N,其中a=b时a=N=b,b=N=a时b a. B是否在此范围内。取决于等式a (b-a) * random()中的浮点舍入结果。
随机高斯(,)
正态分布,也称为高斯分布。是平均值,而是标准偏差。这个函数比下面定义的normalvary()函数稍快。
多线程注意事项:
当两个线程同时调用此方法时,它们可能会获得相同的返回值。这可以通过三种方式避免。
1)让每个线程使用随机数生成器的不同实例。
2)锁定所有外线电话。
3)改用速度较慢但线程安全的normalvary()函数。
随机正态变量(mu,sigma)
正态分布。是平均值,是标准偏差。
总结
本文到此为止。希望能帮到你,也希望你能多关注更多热门IT软件开发工作室的内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。