当前位置:首页>python>Python学习【123】:Python随机数三大金刚:从游戏抽卡到密码安全,你用对了吗?

Python学习【123】:Python随机数三大金刚:从游戏抽卡到密码安全,你用对了吗?

  • 2026-08-22 09:42:55
Python学习【123】:Python随机数三大金刚:从游戏抽卡到密码安全,你用对了吗?

Python学习

一、学前花絮

我们在编写python代码的过程中,有些情况要用到随机数。比如生成一些测试用的数据(之前文章做学生成绩排名的时候就生成关于学生成绩的数据),或者涉及用户随机选择的项目等等。那么随机数到底怎么产生?Python有三个内置的模块专门处理随机数,它们是什么样子?
在Python中生成随机数远不止random.randint()那么简单。根据不同的使用场景,Python提供了三种不同“段位”的随机数解决方案:日常模拟与游戏首选random模块,它简单快捷但并非真正随机;安全敏感场景必须使用secrets模块,它采用密码学安全的真随机源;而在数据科学和机器学习领域,numpy.random则以向量化操作实现性能碾压。
选错模块不仅影响效率,更可能带来安全隐患——用random生成密码密钥就像用纸糊的锁,看似有用实则一捅就破。理解这三个模块的核心差异,是你写出既高效又安全代码的关键一步。

二、Python内置模块生成随机数并示例

Python生成随机数主要有三个模块:random、secrets 和 numpy.random。它们各有不同的应用场景和安全级别。

2.1 random 模块:通用随机数

最基本的模块,适合大多数非安全场景。
输出结果:
从以上结果,我们可以看到,随机数有各种各样的形态。对于数字型,有0~1之间的浮点数,也有指定区间的浮点数等等。对于序列数据(或称为列表)也可以随机选择或者打乱顺序。还可以设置随机种子及满足某种概率分布去得到随机数。

2.2 secrets 模块:密码学安全随机数

专门为安全敏感场景设计,生成不可预测的随机数。
输出结果:
Secrets模块的随机数在安全性方面要比random模块强很多了,在实际应用中身份认证、密钥生成等都用到该模块。

2.3 numpy.random 模块:高性能批量随机数

适合科学计算和大数据场景。
输出结果:

2.4实际项目选择哪种随机数

场景1:游戏开发
输出结果:
场景2:Web应用(安全敏感)
输出结果:
场景3:数据科学与机器学习
输出结果:

2.5 重要注意事项

因为random的特点,尽管是随机但有可能被预测,所以不要用于生成密码、密钥。

2.6 性能对比小测试

输出结果:
从以上数据看出,numpy比random生成随机数要快很多。

三、小结

本文针对python内置的三个关于随机数生成的模块进行了探讨,我们在实际项目中,要分析到底是哪种场景选择用哪种随机数。我之前做过一些小程序,比如关于每周吃什么,可以把各种菜系、菜品混在一起,通过random生成随机数,然后选择出一周的菜谱。这种有意思的尝试,是学习python的动力。
让我们保持学习热情,多做练习。我们下期再见!

最新文章

随机文章