1.random
使用时需要import random。
- random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0
- random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。
- random.randint(a, b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限。
- random.randrange([start], stop[, step]),从指定范围内,按指定基数递增的集合中 获取一个随机数。如:random.randrange(10, 100, 2),结果相当于从[10, 12, 14, 16, ... 96, 98]序列中获取一个随机数。random.randrange(10, 100, 2)在结果上与 random.choice(range(10, 100, 2) 等效。
- random.choice(sequence)。参数sequence表示一个有序类型。这里要说明一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence。
- random.shuffle(x[, random]),用于将一个列表中的元素打乱。
- random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。不会重复选取。
2.numpy.random
numpy的数组不能用上面的随机函数,numpy也有自己的随机函数:
1.numpy.random.rand(d0,d1,…,dn) rand函数根据给定维度生成[0,1)之间的数据,dn表示每个维度,返回值为指定维度的array
2.numpy.random.randn(d0,d1,…,dn) 返回一个具有标准正态分布的数组。
3.np.random.randint(low,hihg,size) 生成一个[low,high)的数组,数组形状为size。
4.np.random.random_integers(low,hihg,size) 生成一个[low,high]的数组,数组形状为size。不过不赞成使用次用法,建议使用np.random.randint(low,hihg,size+1)
5.numpy.random.random((d0,d1,…,dn)) 函数根据给定维度生成[0,1)之间的数据,dn表示每个维度,返回值为指定维度的array,random函数的功能和前面的rand一模一样,不过多了个括号。。。
6.random_sample((d0,d1,…,dn)) 用法与numpy.random.random((d0,d1,…,dn)) 一样。
7.np.random.choice(a, size=None, replace=True, p=None) 对一维数组a采样,可重复采样
8.np.random.permutation(x) 将数组打乱,多维数组按第一维度打乱。返回打乱后的数组,不会改变x。
9.np.random.random_sample(x) 将数组x按第一个维度打乱,原地打乱,没有返回值。
3.随机种子
random.seed(a=None)
如果不使用随机种子,那么每一次随机的值都是不一样的,当我们的程序希望生成的随机数能够复现的时候,就可以设置 seed()函数,因为他生成的随机数是固定的。如果是numpy的随机种子,那就是np.random.seed()
np.random.seed(10)
b = np.random.randint(1,4,(3,4))
print(b)
c = np.random.randint(1,4,(3,4))
print(c)
当不使用np.random.seed(10)时,b和c每一次的输出结果都是随机的。使用随机种子后,上面程序不管运行多少次,结果都是一样的,不过b和c的值不一样,如果我们想让b和c的值也一样,可以在给c赋值前重行运行一下相同的随机种子,这样b和c的值相同。
np.random.seed(10)
b = np.random.randint(1,4,(3,4))
print(b)
np.random.seed(10)
c = np.random.randint(1,4,(3,4))
print(c)