Python随机数生成_random模块说明【指导】
技术百科
冰川箭仙
发布时间:2026-01-01
浏览: 次 Python random模块基于梅森旋转算法生成伪随机数,适用于模拟等非密码学场景;提供random()、randint()等基础函数;需用seed()控制可复现性;多线程应使用独立Random()实例;密码学用途须改用secrets模块。
Python 的 random 模块是生成伪随机数的标准工具,适用于模拟、游戏、测试等常见场景。它基于梅森旋转算法(Mersenne Twister),默认周期长达 219937−1,足够满足绝大多数非密码学用途。
常用基础函数用法
这些函数最常被调用,适合快速生成不同类型的随机值:
-
random.random():返回 [0.0, 1.0) 区间内的浮点数 -
random.randint(a, b):返回 [a, b] 区间内的整数(含端点) -
random.uniform(a, b):返回 [a, b) 或 [b, a) 区间内的浮点数(自动判断大小) -
random.choice(seq):从非空序列中随机选一个元素 -
random.choices(population, weights=None, k=1):可重复抽样,支持加权 -
random.sample(population, k):无放回抽样,k 不能超过 population 长度
控制随机性:种子与状态管理
每次运行程序时 random 模块会自动用系统时间初始化状态,所以结果通常不同。若需可复现的结果(如调试、单元测试),应手动设置种子:
- 调用
random.seed(42)(数字、字节串或任意可哈希对象均可) - 也可用
random.setstate(state)和random.getstate()保存/恢复内部状态 - 注意:全局 random 实例是线程安全的,但多线程中建议为每个线程创建独立
random.Random()实例
使用独立随机实例避免干扰
在模块级或类中直接调用 random.xxx() 会共享同一个全局实例,容易被其他代码意外改变状态。推荐做法是:
- 显式创建独立实例:
rng = random.Random(123) - 后续全部使用
rng.randint(1, 6)、rng.choice(...)等 - 尤
其适合库开发、多线程环境或需要隔离随机行为的组件
不适用于密码学场景
random 模块生成的是伪随机数,**不可用于密码学目的**(如生成密钥、token、验证码盐值等):
- 应改用
secrets模块(Python 3.6+),例如secrets.token_hex(16)、secrets.choice() -
os.urandom()也是安全的底层接口,但封装不如secrets友好 - 混淆两者可能导致严重安全风险,务必区分用途
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- MAC怎么设置程序窗口永远最前_MAC窗口置顶插件
- Win11怎么自动隐藏任务栏_Win11全屏显示设
- Windows 11怎么设置默认解压软件_Wind
- Windows怎样关闭开始菜单广告_Windows
- mac怎么安装adb_MAC配置Android A
- 如何在Golang中使用time处理时间_Gola
- Win11怎么开启专注模式_Windows11时钟
- Win11时间怎么同步到原子钟 Win11高精度时
- Win11怎么恢复误删照片_Win11数据恢复工具
- Windows系统文件被保护机制阻止怎么办_权限不
- php怎么下载安装并配置环境变量_命令行调用PHP
- Win11怎么设置虚拟桌面 Win11新建多桌面切
- Win11怎么制作U盘启动盘_Win11原版系统安
- Mac怎么设置登录项_Mac管理开机自启动程序【教
- Win10如何更改网络连接_Windows10以太
- Win11怎么设置默认PDF阅读器 Win11修改
- 如何使用Golang log设置日志输出格式_Go
- Win11怎么设置多显示器任务栏 Win11扩展任
- Django 密码修改后会话失效的解决方案
- Win11如何设置开机问候语 Win11修改登录界
- MySQL 中使用 IF 和 CASE 实现查询字
- c++怎么使用类型萃取type_traits_c+
- 如何在 VS Code 中正确配置并使用 NumP
- Win11怎么激活Windows10_Win11激
- MAC怎么一键隐藏桌面所有图标_MAC极简模式切换
- Win10如何更改电脑休眠时间_Windows10
- Win11无法识别耳机怎么办_解决Win11插耳机
- Win11怎么更改系统语言_Win11中文语言包下
- Win11搜索栏无法输入_解决Win11开始菜单搜
- Python如何创建带属性的XML节点
- php订单日志怎么记录物流_php记录订单物流变更
- MAC如何启用访达侧边栏显示_MAC Finder
- Mac怎么给文件夹加密_Mac创建加密磁盘映像教程
- Mac如何整理桌面文件_Mac使用堆栈功能一键整理
- c++如何获取map中所有的键_C++遍历键值对提
- 静态属性修改会影响所有实例吗_php作用域操作符下
- Win11怎么关闭自动调节亮度 Win11禁用内容
- Windows怎样关闭Edge新标签页广告_Win
- Win11怎么关闭粘滞键_彻底禁用Windows
- Win11怎么设置单手模式_Win11触控键盘布局
- 如何使用 Python 合并文件夹内多个 Exce
- 如何在Golang中修改数组元素_通过指针实现原地
- Win11怎么关闭自动调节屏幕亮度_Windows
- C#怎么创建控制台应用 C# Console Ap
- Win11怎么调整屏幕亮度_Windows 11调
- XSLT怎么生成动态的HTML属性名和标签名
- 跨文件调用类方法怎么用_php作用域操作符与自动加
- Windows蓝屏错误0x0000002C怎么解决
- Win11怎样安装剪映专业版_Win11安装剪映教
- Python对象比较与排序_魔术方法解析【教程】

其适合库开发、多线程环境或需要隔离随机行为的组件
QQ客服