随机数是程序设计语言的重要组成部分。随机数用于随机性、安全性、彩票类应用。
什么是随机,真随机,伪随机?
即使看起来很简单,随机数也是安全的一个基本主题。随机创建的数字用于创建证书、密码、密码短语、身份验证,甚至标识。即使大多数库提供随机数生成器或方法,它们也不是完全随机的。它们大多是通过CPU或一些非周期性的行为(如用户输入、网络流量等)产生的。真正的随机意味着完全非周期的,任何人都无法预测。伪随机是一个用来描述通过编程语言和库提供的不同随机函数的术语。伪随机不是真正的随机,但它提供了类似的属性,可以在大多数情况下使用。
使用Seed()方法为随机性设定种子
seed()方法用于初始化随机数生成器。即使它不是强制性的,如果没有初始化系统时钟被用作随机数生成的随机源。如果使用seed(1)启用,则使用系统提供的随机数生成器设备,如/dev/uradom等,这样更可靠。
random.seed(1)
用randint()方法生成随机数
可以使用Python提供的不同方法生成随机数,但最流行和最直接的方法是 兰迪特() 方法。此方法可用于在指定的范围内生成随机数,其中我们将提供一个开始和停止数,并且随机数将在这些开始和停止数之间生成。randint()方法只接受开始和停止参数的整数,并返回唯一的整数随机数。
randint(start,stop)
- 开始 是生成随机数的起始数。生成的随机数不能小于开始数。
- 停止 是生成随机数的结束数。生成的随机数不能大于stop。
import randomrandom.randint(1,2)// 1random.randint(1,2)// 1random.randint(1,3
)// 2random.randint(1,3)// 1random.randint(1,3)// 2
random.randint(1,4)// 4random.randint(1,4)// 4random.randint(1,4)// 4random.randint(1,4)// 2random.randint(1,400)// 49
random.randint(1,400)// 250random.randint(1,400)// 15
random.randint(1,400)// 200
![图片[1]-如何在Python中生成随机数?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/09/wisetut_image-8.png)
用randrange()方法生成随机数
随机范围() 与生成随机整数的randint()方法类似。唯一的区别是可以为随机数生成指定一个步骤,其中生成的随机数将是这些步骤之一。
random.randrange(start,stop,step)
- 开始 参数指定步骤的开始。
- 停止 在步骤末尾指定的参数。
- 步 是递增的数字或迭代,如步骤为3,开始为6,则可能选择的数字为6、9、12、15等。
在下面的示例中,我们将使用3作为步骤,从3开始到21结束。
random.randrange(3,21,3)
![图片[2]-如何在Python中生成随机数?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/09/wisetut_image-9.png)
randrange()方法还有另一种用法,我们只能提供如下所示的结束编号。在这种情况下,起始数字将是0。
random.randrange(10)
![图片[3]-如何在Python中生成随机数?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/09/wisetut_image-10.png)
用uniform()方法生成随机数
统一() 方法是另一种用于生成随机数的方法,但为浮点类型。它接受两个参数来设置范围的开始和结束。
random.uniform(start,end)
- 开始 参数将设置范围的开始。
- 结束 参数将设置范围的结尾。
random.uniform(0,10)
![图片[4]-如何在Python中生成随机数?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/09/wisetut_image-11.png)
用NumPy randint()方法生成随机数
NumPy是一个流行的Python库,提供与数值和计算相关的模块和方法。NumPy还提供随机数生成方法。randint()是一种可以生成随机数和矩阵的方法。
numpy.random.randint(start,end,size)
- 开始 参数设置矩阵元素的起始编号。
- 结束 参数设置矩阵元素的结束编号。
- 大小 参数指定矩阵维度。
因此,此方法将返回一个三维矩阵。
import numpyrandomArray = numpy.random.randint(10,50,size=(3,3))
![图片[5]-如何在Python中生成随机数?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/09/wisetut_image-12.png)
使用Shuffle()方法随机洗牌给定列表
shuffle()是随机模块提供的另一种方法。此方法将对给定的序列类型(可以是列表、元组等)进行洗牌。洗牌操作有一个限制,其中序列不能包含超过2048个元素。洗牌后的序列将存储在给定的序列变量中。
l = [1,2,3,4,5,6,7,8]random.shuffle(l)
![图片[6]-如何在Python中生成随机数?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/09/wisetut_image-13.png)