当前位置: 首页
业界动态
Python random模块随机性你真的理解吗

Python random模块随机性你真的理解吗

热心网友 时间:2026-06-17
转载

Python的random模块基于MersenneTwister算法产生伪随机数,种子相同则输出可预测。常用函数如choice、shuffle、sample和uniform各有用途。需注意全局状态多线程竞争、安全性不足以及容器环境种子重复的陷阱。安全场景应改用secrets或os urandom模块。

很多人写了几年 Python,对 random 的用法还停在 randint(1, 100)。说实话,这个模块里藏的坑,比你想象的大得多。

先说结论

random 产生的不是真随机,是伪随机。如果你拿它做抽奖、生成验证码、或者搞加密相关的东西,大概率已经在生产环境埋雷了。

什么叫伪随机

random 模块底层跑的是 Mersenne Twister 算法。它拿一个种子值,用确定性的数学公式推算出一串“看起来随机”的数字序列。

关键点来了:只要种子一样,输出永远一样。

import random
random.seed(42)
print(random.randint(1, 100))  # 82
random.seed(42)
print(random.randint(1, 100))  # 还是82

这不是 bug,是设计。做调试、做测试、做科学实验的时候,可复现的随机性反而是刚需。但你要拿它当加密工具用,那就是在给自己挖坑。

日常最常用的几个函数

random.choice() 从序列里随机抽一个,比写 randint 再取下标干净多了。一行代码搞定,不用先算索引再去取,可读性直接上一个档次。

random.shuffle() 原地打乱列表。不少人踩过的坑:这玩意儿是原地操作,改变原有列表,不返回新列表。你以为它在返回打乱后的结果,其实返回的是 None。这个坑在行业里反复出现。

random.sample() 做不放回抽样,公司年会抽奖就用它。指定抽几个人,它帮你搞定,不用自己写去重逻辑。

random.uniform(a, b) 生成区间内的浮点数,造测试数据很实用。

三个容易翻车的地方

第一个坑是全局状态。random 模块内部维护了一个全局 Random 实例,整个进程共享。多线程环境下,几个线程同时调 random.randint(),状态竞争的问题就来了。解决办法是用 random.Random() 自己建实例,各用各的,互不干扰。

第二个坑是安全性。Mersenne Twister 是可预测的。攻击者收集足够多的输出值,理论上能反推出种子。Python 专门提供了 secrets 模块来处理这类需求。验证码、密码重置链接、会话 ID,全部上 secrets,别偷懒用 random

第三个坑是不传 seed 的行为。不传参数的话,random 用系统时间做种子。听起来随机吧?但在容器化环境里,如果一堆进程同时启动,时间戳可能完全一样,种子也就撞了。这种场景下,你以为每个进程都有独立的随机序列,实际上可能大家都在输出同一串数字。

场景对应方案

日常开发和测试数据,random 随便用。需要可复现的科学实验,用 random.seed 固定种子。密码、token、验证码,切换到 secrets 模块。大批量高性能随机数,上 numpy.random。加密级别的随机数,用 os.urandom()

写在最后

random 模块本身没问题,问题是用错了地方。把伪随机当加密随机用,是不少线上事故的直接原因。搞清楚每个工具的边界在哪,非常重要!

来源:https://www.51cto.com/article/840822.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
雷克沙JumpDrive A50V 行车记录存储新标杆

雷克沙JumpDrive A50V 行车记录存储新标杆

雷克沙推出JumpDriveA50V行车记录U盘,采用USB3 2Gen1高速接口,读取速度200MB s,写入最高70MB s,支持哨兵模式与多路同时录像,耐温范围-40℃至85℃,适配特斯拉、理想等新能源车型,已被理想选为原厂标配存储设备。

时间:2026-07-15 22:01
创邻科技灵机一体机:单CPU驱动千亿模型,开启普惠AI新时代

创邻科技灵机一体机:单CPU驱动千亿模型,开启普惠AI新时代

创邻科技推出「灵机」一体机,单颗主流CPU即可驱动百亿至千亿参数大模型,无需GPU、超频与水冷。搭载RAG和GraphoraX智能体平台,支持150万tokens上下文,性能超越人类阅读速度。以极低成本实现本地化部署,面向中小企业、政府、教育及金融等行业,开启普惠AI算力时代。

时间:2026-07-15 22:01
苹果液态玻璃设计遭抵制:用户批干扰视线,呼吁立即整改

苹果液态玻璃设计遭抵制:用户批干扰视线,呼吁立即整改

苹果液态玻璃设计引发用户强烈抵制,被批干扰视线、影响阅读。测试版存在通知文字不清、控制中心视觉混乱等问题。苹果可能调整,该设计面向未来AR眼镜等产品,部分用户也有积极反馈。

时间:2026-07-15 22:01
时空壶W4Pro凭何成为AI同传行业标杆与引领者

时空壶W4Pro凭何成为AI同传行业标杆与引领者

时空壶W4Pro基于BabelOS系统实现矢量降噪与双向同传,将响应和翻译延迟标准提升。2024年营收破两亿元,出口量年增长超100%,获亚马逊翻译机最佳销量,在商务、教育、文旅场景中落地,推动AI同传从概念变为现实。

时间:2026-07-15 22:01
时空壶T1离线翻译机 解锁无网生活沟通自由

时空壶T1离线翻译机 解锁无网生活沟通自由

时空壶T1离线翻译机依靠端侧AI模型实现无网翻译,支持31组语言对,响应速度0 2秒。具备拍照翻译、三麦克风降噪、eSIM全球流量、12小时续航等功能,覆盖出行、购物、文化探索等场景,实现无网环境沟通自由。

时间:2026-07-15 22:00
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜