千家信息网

Python伪随机数模块random怎么用

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇"Python伪随机数模块random怎么用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来
千家信息网最后更新 2025年01月22日Python伪随机数模块random怎么用

这篇"Python伪随机数模块random怎么用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Python伪随机数模块random怎么用"文章吧。

random模块

该模块实现了各种分布的伪随机数生成器。(包括在实数轴上计算均匀、正态(高斯)、对数正态、负指数、伽马和贝塔分布的函数)不应将此模块的伪随机生成器用于安全目的。有关安全性或加密用途,请使用secrets模块。

关于random模块的更多详细内容,请参考官方文档random — 生成伪随机数

下面列举一下该模块常用的功能。

random.seed

random.seed(a=None, version=2)

初始化随机数生成器,如果a被省略或为None,则使用当前系统时间。如果操作系统提供随机源,则使用它们而不是系统时间。当你的seed是相同的情况下,你多次执行得到的随机数序列是相同的。因为Mersenne Twister的完全确定性,因此random模块产生的随机数不适合加密目的。

常用整数随机函数

random.randrange(stop)random.randrange(start, stop[, step])

randrange()返回一个[start, stop)区间内随机选择的元素。

random.randint(a, b)

返回随机整数 N 满足 a <= N <= b。相当于 randrange(a, b+1)。

常用序列随机函数

random.choice(seq)

从非空序列 seq 返回一个随机元素。 如果 seq 为空,则引发 IndexError。

random.shuffle(x[, random])

将序列 x 随机打乱位置。(在原来的序列上进行,不会生成新的序列。)

可选参数 random 是一个函数,在 [0.0, 1.0) 中返回随机浮点数;默认情况下是函数 random.random() 。

random.sample(population, k, *, counts=None)

返回从总体序列或集合中选择的唯一元素的 k 长度列表。 用于无重复的随机抽样。(抽奖常用的函数)下面是一个抽奖的例子。

有30000人参加了Python编程活动,然后抽取1000人进行奖励。其中一等奖20人,二等奖30人,三等奖50人,四等奖200人,五等奖700人。

上述的抽奖活动,可以用如下的代码完成。

res = random.sample(range(1, 30001), 1000)print("一等奖名单:", res[:20])print("二等奖名单:", res[20:50])print("三等奖名单:", res[50:100])print("四等奖名单:", res[100:300])print("五等奖名单:", 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号掺入前10res.insert(random.randint(30, 40), 33)  # 将33号掺入30-40之间res.insert(random.randint(70, 90), 333) # 将333掺入到70-90之间print("一等奖名单:", res[:20])print("二等奖名单:", res[20:50])print("三等奖名单:", res[50:100])print("四等奖名单:", res[100:300])print("五等奖名单:", res[300:])

常用实数随机函数

random.random()

返回 [0.0, 1.0) 范围内的下一个随机浮点数。

random.uniform(a, b)

返回一个随机浮点数 N ,当 a <= b 时 a <= N <= b ,当 b < a 时 b <= N <= a 。终点 b 是否在该范围内。取决于等式 a + (b-a) * random() 中的浮点舍入结果。

random.gauss(mu, sigma)

正态分布,也称高斯分布。 mu 为平均值,而 sigma 为标准差。 此函数要稍快于下面所定义的 normalvariate() 函数。

多线程注意事项:

当两个线程同时调用此方法时,它们有可能将获得相同的返回值。 这可以通过三种办法来避免。

1) 让每个线程使用不同的随机数生成器实例。

2) 在所有调用外面加锁。

3) 改用速度较慢但是线程安全的 normalvariate() 函数。

random.normalvariate(mu, sigma)

正态分布。 mu 是平均值,sigma 是标准差。

以上就是关于"Python伪随机数模块random怎么用"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

模块 函数 名单 随机数 序列 内容 生成 常用 一等奖 三等奖 二等奖 生成器 线程 相同 安全 五等奖 元素 四等奖 点数 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州能耗管理软件开发怎么收费 中专软件开发靠谱吗 通用云存储服务器软件 h1z1怎么看服务器 2017网络安全事故案例 战地1怎么看服务器数字id 软件开发工具的主要分类方法 电影拆弹专家2票房数据库 应届毕业生笔试题软件开发 嘉定区共享陪护床软件开发 手机软件开发元素 陇县天气预报软件开发 影像传输服务器是什么原因 设计单位项目管理软件开发报价 重庆企业存储服务器 天津专业网络技术服务代理商 哈里奥软件开发公司创始人 网络技术人才发展理论 网络技术专业面试题 软件开发部门职称 河南放心软件开发设施有哪些 玩ufc说服务器超时是怎么回事 新华电脑网络技术工程师 数据库分离语法 蒂森克虎伯服务器 沈阳凤网络技术有限公司 关于网络安全主持稿串词 吃鸡官方服务器过载 咸宁软件开发外包 网络安全法对地方政府有关
0