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; ?>
】
相关推荐
- php打包exe怎么传递参数_命令行参数接收方法【
- Win10系统怎么查看端口状态_Windows10
- php会话怎么开启_session_start函数
- Go语言中CookieJar的持久化机制解析:内存
- C#如何使用Channel C#通道实现异步通信
- c# 在ASP.NET Core中管理和取消后台任
- Mac怎么设置登录项_Mac管理开机自启动程序【教
- Laravel 查询 JSON 列:高效筛选包含数
- 如何在Golang中实现文件下载_Golang文件
- Windows7如何安装系统镜像_Windows7
- C#如何使用XPathNavigator高效查询X
- php命令行怎么运行_通过CLI模式执行PHP脚本
- Win11时间怎么同步到原子钟 Win11高精度时
- 怎么将XML数据可视化 D3.js加载XML
- 如何在Golang中指定模块版本_使用go.mod
- Win11怎么关闭通知中心_Windows11系统
- Windows10怎么查看硬件信息_Windows
- Win10怎么创建桌面快捷方式 Win10为应用创
- php中作用域操作符能访问私有静态属性吗_访问权限
- 如何在Golang中实现WebSocket广播_使
- Windows 11如何查看系统激活密钥_Wind
- Windows 10怎么隐藏特定更新补丁_Wind
- c++如何利用doxygen生成开发文档_c++
- Win11任务栏怎么放到顶部_Win11修改任务栏
- Golang如何避免指针逃逸_Golang逃逸分析
- 作用域操作符会影响性能吗_php静态调用性能分析【
- Django 密码修改后会话失效的解决方案
- 如何从 Go 的 map[string]inter
- C#怎么创建控制台应用 C# Console Ap
- Win11怎么更改系统语言为中文_Windows1
- Win11怎么关闭定位服务_保护Win11位置隐私
- c++的static关键字有什么用 静态变量和静态
- Win11怎么查看激活状态_查询Windows 1
- 如何在 Go 项目开发中正确处理本地包导入与远程模
- Python函数接口文档化_自动化说明【指导】
- 跨文件调用类方法怎么用_php作用域操作符与自动加
- Windows10如何查看保存的WiFi密码_Wi
- Win11怎样安装网易云音乐_Win11安装网易云
- Win11怎么关闭搜索历史_Win11清除设备上的
- 网站内页做seo排名怎么做?
- PHP的Workerman对架构扩展有啥帮助_应用
- 如何用正则表达式精确匹配“start”到“end”
- 新手学PHP架构总混淆概念咋办_重点梳理【教程】
- 如何诊断并终止卡死的 multiprocessin
- Windows10无法连接到Internet_Wi
- Linux怎么禁止Root用户远程登录_Linux
- VSC怎样在Linux运行PHP_Ubuntu系统
- Win11麦克风没声音怎么设置_Win11麦克风权
- php打包exe后无法读取环境变量_变量配置方法【
- 如何在 Django 中安全修改用户密码而不使会话

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