python如何产生随机数:模块与实例

python如何产生随机数,主流依靠内置random模块生成伪随机数,密码安全场景需使用secrets模块,random模块无需额外安装,可快速生成整数、浮点数、随机序列,仅适用于模拟、抽样、游戏等非加密场景;secrets模块生成的随机数抗预测能力更强,适合密码、令牌等安全场景,你不能用random模块生成密钥,因为它的序列可被推算。

python随机数基础模块random

你导入random模块后,调用random.random()可得到0到1之间的浮点数,取值区间包含0,不包含1。调用random.randint(a,b)会生成a到b之间的整数,区间两端数字都有可能被取出,例如random.randint(1,10)会返回1至10的任意整数。

random.uniform(a,b)用于生成a和b之间的随机浮点数,a和b大小可以互换,函数会自动识别上下限。random.randrange(start,stop,step)按步长选取整数,不会读取stop位置的数值,random.randrange(0,10,2)只会取出0,2,4,6,8。

设置种子可以固定随机序列,random.seed(数字),相同种子每次运行代码会输出完全一样的随机结果,适合调试代码,正式生产抽样时一般不固定种子。

python随机数安全模块secrets

secrets属于Python内置模块,从3.6版本开始支持,依托操作系统底层随机源,伪随机序列难以预测。secrets.randbelow(n)生成0到n-1的安全随机整数,适合生成验证码、密钥。

不要用random模块处理加密相关业务,random模块的算法是确定性伪随机,拿到足够多输出样本,就能反向推算后续全部随机数值。

函数模块输出类型适用场景
random.random()random0~1浮点数模拟、概率测试
random.randint()random区间整数抽奖、随机索引
secrets.randbelow()secrets安全随机整数密码、一次性令牌

numpy库也提供随机生成接口,适合批量生成大量随机数组,多用于数据分析和机器学习。

示例代码:

importrandom
num=random.randint(1,100)
print(num)

这段代码运行后输出1到100之间随机整数。

伪随机数存在可复现特性。

敬慕百科汇集百科知识与游戏文化,带你发现世界的每一个精彩角落。

想要了解更多关于python如何产生随机数的文章欢迎访问:百科