首先,np.random.seed()函数中的参数可以选择任何一个数。
它的功能是使设有相同参数的seed函数之后的随机数都相等。如:
a = np.array([[1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [3, 4, 5, 6, 7], [4, 5, 6, 7, 8], [5, 6, 7, 8, 9]])
print(a)for i in range(3):np.random.seed(0)b = np.random.permutation(a)print(b)
得到:
[[1 2 3 4 5][2 3 4 5 6][3 4 5 6 7][4 5 6 7 8][5 6 7 8 9]]
[[3 4 5 6 7][1 2 3 4 5][2 3 4 5 6][4 5 6 7 8][5 6 7 8 9]]
[[3 4 5 6 7][1 2 3 4 5][2 3 4 5 6][4 5 6 7 8][5 6 7 8 9]]
[[3 4 5 6 7][1 2 3 4 5][2 3 4 5 6][4 5 6 7 8][5 6 7 8 9]]
而:
a = np.array([[1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [3, 4, 5, 6, 7], [4, 5, 6, 7, 8], [5, 6, 7, 8, 9]])
print(a)
np.random.seed(0)
b = np.random.permutation(a)
print(b)
np.random.seed(1)
c = np.random.permutation(a)
print(c)
np.random.seed(2)
d = np.random.permutation(a)
print(d)
得到:
[[1 2 3 4 5][2 3 4 5 6][3 4 5 6 7][4 5 6 7 8][5 6 7 8 9]]
[[3 4 5 6 7][1 2 3 4 5][2 3 4 5 6][4 5 6 7 8][5 6 7 8 9]]
[[3 4 5 6 7][2 3 4 5 6][5 6 7 8 9][1 2 3 4 5][4 5 6 7 8]]
[[3 4 5 6 7][5 6 7 8 9][2 3 4 5 6][4 5 6 7 8][1 2 3 4 5]]
设置完一个seed之后,对所有之后的随机数都有效,不论执行程序多少次,所得到的随机数是不变的,如:
a = np.array([[1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [3, 4, 5, 6, 7], [4, 5, 6, 7, 8], [5, 6, 7, 8, 9]])
print(a)
np.random.seed(0)
b = np.random.permutation(a)
print(b)
c = np.random.permutation(a)
print(c)
d = np.random.permutation(a)
print(d)
无论执行多少次,得到的结果都是:
[[1 2 3 4 5][2 3 4 5 6][3 4 5 6 7][4 5 6 7 8][5 6 7 8 9]]
[[3 4 5 6 7][1 2 3 4 5][2 3 4 5 6][4 5 6 7 8][5 6 7 8 9]]
[[1 2 3 4 5][3 4 5 6 7][2 3 4 5 6][5 6 7 8 9][4 5 6 7 8]]
[[2 3 4 5 6][4 5 6 7 8][5 6 7 8 9][1 2 3 4 5][3 4 5 6 7]]
也就是说,虽然在执行一次程序的过程中,b、c、d数组是不同的,但重复执行此程序时,b、c、d是不变的。