从概率论角度来说,随机数是随机产生的数据(比如抛硬币),但时计算机是不可能产生随机值,真正的随机数也是在特定条件下产生的确定值,计算机不能产生真正的随机数,只能产生伪随机数
一、调用语句:
import random # python中的随机数生成模块
二、基本随机数函数
(一)seed(a):设置初始化随机种子,可重现相同随机数序列,与其他函数配套使用
使用:
random.seed(a)
设置random包的seed值,该值对于生成随机数至为重要,a取整数或浮点数不设置时默认以系统时间为种子
(二)random():下述
二、扩展随机数函数
函数功能主要分为:
(一)获取随机小数
- random():生成一个[0.0,1.0)之间的随机小数
In:
import random
x = random.random()
print(x)
Out:
>>0.8268016072790678
2.uniform(a,b):生成一个[a,b]之间的随机小数
In:
import random
x = random.uniform(10, 20)
print(x)
Out:
>>17.744508676671582
(二)获取随机整数
- randint(a,b):生成一个[a,b](b>a)之间的随机整数(仅按域的要求获得随机整数)
In:
import random
x = random.randint(10, 20)
print(x)
Out:
>>12
2.getrandbits(k):生成一个k比特长度的随机整数 (按存储大小的要求获得随机整数)
In:
import random
x = random.getrandbits(3)
#随机生成二进制长度为3位的十进制整数(0-7)
print(x)
Out:
>>5
3.randrange(start,stop[,step]):生成一个[start,stop)之间以step为步数的随机整数 (按域、步长的要求获得随机整数)
In:
import random
x = random.randrange(10, 100, 2)
#相当于从序列[10, 12, ..., 96, 98]中随机返回一个数。
print(x)
Out:
>>62
(三)对序列类型进行随机操作
- choice(seq):从序列类型seq(如字符串,列表,元组)中随机返回一个元素(用于序列抽1签)
In:
import random
x = random.choice(["i", "love", "Math"])
print(x)
Out:
>>Math
2.shuffle(seq):将序列类型seq中元素随机排序,返回打乱后序列,seq被改变(用于序列洗牌)
In:
import random
x = ['python', 'is', 'powerful', 'simple', '.']
random.shuffle(x)
print(x)#会修改原有序列
Out:
>>['is', 'powerful', 'simple', '.', 'python']
3.sample(pop,k):从序列类型pop中选取k个元素,以列表类型返回(用于序列抽K签,存入列表)
In:
import random
list = [1, 2, 3, 4, 5, 6, 7]
x = random.sample(list, 5)
# 从list中随机选取5个元素,生成一个新的list并返回
print("改变后序列:",x)
print("原序列:",list)#原序列不改变
Out:
>>改变后序列: [2, 1, 4, 5, 7]
原序列: [1, 2, 3, 4, 5, 6, 7]
最后:random库找随机数在一些算法中使用最多,譬如遗传算法找遗传因子,找最优路径时先生成随机路径再优化等等。而且random库并不难学,只要熟悉了函数,就能够很快上手帮助自己解决问题的