说明:
随机数的生成可以使用python的标准库,也可以使用numpy,这里介绍的是使用标准库生成随机数
- 随机数生成器
计算机程序生成的随机数都不是真的随机数,而是以一个种子(真随机数)为初始值,通过算法不停地迭代来生成后续的随机数
- random.random():生成0到1之间的随机浮点数
import random
random.random() # 生成一个随机数,且每次运行结果不一致
for i in range(5):
print(random.random()) # 再生成5个随机数,每次运行结果不一致
- random.seed():随机数种子(为了反复生成同一组随机数)
import random
random.seed(5)
random.random() # 生成一个随机数,但是每次运行结果一致
for i in range(4):
print(random.random()) # “再”生成4随机数,即不包括第一个随机数,且运行多次结果一致
# 上述代码的运行结果,实际上和random.seed(5)+生成5个random.random()的结果一致
- random.randint():随机生成指定范围内的整数
# random,randint(min,max)有两个参数,标示随机数生成器的取值范围
import random
random.randint(1,500) # 在1到500之间取一个随机整数,且每次结果不一致
- random.randrange():随机生成一个指定范围内和指定取值步长规则的整数
# random,randrange(min,max,m)有三个参数,分别是随机数生成器的取值范围,以及取值的步长
import random
random.randrange(1,100,10) # 在1到100之间,按照步长为10,随机取一个整数;且每次结果不一致
- 取样
- random.shuffle(a):打乱原列表a中元素的顺序
import random
a=[1, 2, 3, 4, 5, 6]
random.shuffle(a)
print(a) # [3,1,4,5,6,2] 每次生成结果不一致
# 需要注意的是,不用将打乱后的序列重新赋值给一个变量,再去打印;原因是shuffle()函数没有返回值,即在原列表地址修改列表的顺序。
# 所以如果需要保留原始列表,要copy()一下
- random.choice(a):随机选择列表a中的一个值
# 值得注意的是,string类型也可以取样
import random
a="qwertyuiopasdfghjkl"
random.choice(a) # 随机取出一个字符
- random.sample(a,n):两个参数,随机在列表a中选择n个值
import random
a="qwertyuiopasdfghjkl"
random.sample(a,5) # 随机取出5个字符