前言:随机数是在各种复杂条件下产生的确定值,计算机无法产生真正的随机数,random库产生的是伪随机数,我们也常把伪随机数称为随机数。(以下介绍来自百度百科)伪随机数是用确定性的算法计算出来自[0,1]均匀分布的随机数序列。并不真正的随机,但具有类似于随机数的统计特征,如均匀性、独立性等。在计算伪随机数时,若使用的初值(种子)不变,那么伪随机数的数序也不变。伪随机数可以用计算机大量生成,在模拟研究中为了提高模拟效率,一般采用伪随机数代替真正的随机数。模拟中使用的一般是循环周期极长并能通过随机数检验的伪随机数,以保证计算结果的随机性。
一、random库概述
random库是使用随机数的Python标准库
伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素
random库主要用于生成随机数
random库的导入:
import random二、random库中的常用函数(共8个)
1、基本随机数函数:
(1)seed(),初始化给定的随机数种子,默认为当前系统时间。如果设定随机数种子,随机数产生过程是可逆的,例如设定随机数种子为10,那么每第一次产生的随机数均为0.5714025946899135,是一个固定值。
(2)random(),生成一个【0.0,1.0】的随机小数。
import random random.seed() x=random.random() print(x)输出:
0.5041107145052812、扩展随机数函数:
(1)randint(a,b),生成一个a-b之前的随机整数,包含a数,不包含b数。
import random for i in range(5): #利用for循环产生5个随机数 x=random.randint(1,100) #随机数的产生包含1,不包含100. print(x)输出:
10 69 71 69 7(2)randrange(a,b[,k]),生成一个a-b之间的随机整数,步长为k。
import random for i in range(5): x=random.randrange(0,100,5) print(x)输出:
20 45 75 80 0(3)getrandbits(k),生成一个k比特长的随机整数。例如k=10,就会生成一个二进制0-1111111111对应的随机整数。
import random for i in range(5): x=random.getrandbits(10) print(x) print("{:b}".format(x)) #将x转换成二进制数,便于理解输出:
27 11011 412 110011100 431 110101111 845 1101001101 747 1011101011(4)uniform(a,b),生成一个a-b之间的随机小数。
import random for i in range(5): x=random.uniform(1,10) print(x)输出:
3.051171175293432 9.356543374785861 6.104669013356983 1.5126666933612416 4.591974635124934(5)choice(seq),从序列seq中随机选择一个数。
import random seq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] for i in range(5): x = random.choice(seq) print(x)输出:
4 3 7 8 6(6)shuffle(),将seq序列中的数随机打乱,重新排列后输出。
import random seq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] for i in range(5): random.shuffle(seq) print(seq)输出:
[8, 9, 1, 3, 5, 2, 4, 6, 7, 0] [4, 1, 6, 5, 7, 0, 3, 2, 8, 9] [2, 5, 1, 9, 7, 8, 3, 6, 4, 0] [1, 5, 6, 9, 8, 4, 2, 0, 7, 3] [3, 8, 6, 1, 7, 4, 2, 9, 0, 5]