玩转 Python 中的随机数_python编程随机数

liftword2个月前 (02-05)技术文章16

开发中我们经常遇到需要随机数的场景,比如为了用户密码更安全我们有时会加盐,也就是将用户原密码连接上一串随机字符然后加密保存,又比如我们可能需要随机展示某张图片等等。今天,我们就来理一理 Python 中的随机数的玩法,当然,这里只涉及标准库。

随机生成 0 到 1 之间的浮点数

random.random() 方法会返回 [0.0, 1.0) 之间的浮点数,注意,这是一个左闭右开的区间,随机数可能会是 0 但不可能为 1 。

随机生成 a 与 b 之间的整数

使用 random.randint(a , b) 方法,你可以生成一个 a 与 b 之间的随机整数,也就是 [a, b] 。

当然,如果你想要生成的随机整数不会包含 b ,也即 [a, b) , 你可以使用 random.randrange() 方法。

生成 a 与 b 之间的浮点数

如果你需要生成 [a, b] 之间的随机浮点数,那么 random.uniform(a, b) 会满足你的需求。

从列表中随机取出一个元素

如果你想从序列类型中随机取出一个元素,比如列表、元祖、字符串等,random.choice() 是一个不错的选择。

需要注意的是,该方法需要参数非空,不然会抛出 IndexError 的错误。

打乱列表中元素的顺序

使用 random.shuffle(items) 方法可以帮你把序列 items 中的元素随机打乱。

如果你不想修改原来的列表,你可以使用 copy 模块先拷贝一份原来的列表

从列表中随机取出 n 个元素

使用 random.sample(items, n) 方法可以从序列 items 中随机取出 n 个元素。

生成密码学安全的伪随机数

什么是密码学安全的伪随机数,请看维基百科( http://dwz.cn/7JhRN5 )。不过暂时不需要深入的话,理解为比普通随机数更随机的技术就好。

如果你需要生成密码学安全的随机数,你可以通过 random.SystemRandom 类实现。random.SystemRandom 实例化后的对象拥有与 random 类似的方法。

如果 Python 版本在 3.6 及以上,可以使用 secrets 模块

通过 secrets 模块,同样也能生成密码学安全的随机数。并且,利用它生成一些特定的秘钥特别方便。

相关文章

Python获取随机数方法汇总_python语言如何获取随机整数

1. random.random()作用:随机生成一个[0,1)之间的浮点数import random print(f'随机生成一个[0,1)之间的浮点数={random.random()}')2....

在PLC中生成随机数_在plc中生成随机数的代码

有时为了某些测试需求,需要仿真产生一些数据。这时,我们可以通过调取指令或自行编写程序来生成这些随机数据。以下以博途为例,简要说明了随机数产生的几种方式:一、读取系统时间的纳秒作为随机数以固定周期直接将...

Python实现随机&批量梯度下降算法

一.概述梯度下降属于迭代法的一种,可以用于求解最小二乘问题。在求解机器学习算法的模型参数时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函...

用Python做个随机点名系统,禁止逃课

今天给大家分享一个随机点名的系统并把它打包成exe,压迫感来了没有~一、实现随机点名# -*- coding: UTF-8 -*-import tkinter as tkfrom pandas imp...

一日一技:Python 中的random模块_python random模块详解

Python 中的random模块Python随机模块教程展示了如何在Python中生成伪随机数。随机数发生器随机数生成器(RNG)生成一组值,这些值在外观上不显示任何可区分的模式。随机数发生器分为两...