python-numpy随机种子
numpy 随机种子
numpy.random.seed()
的使用
seed( )
用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed( )值
,则每次生成的随即数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。
需要指出的是,numpy.random.seed()
是一次有效的。也就是说,numpy.random.seed()
设置了之后只对后面最近的random随机数有效,举个例子:
1import numpy as np
2# 第一个for循环
3np.random.seed(1)
4print('第一个for循环')
5for i in range(5):
6 print(np.random.rand())
7print('-----------------\n')
8# 第二个for循环
9print('第二个for循环')
10for i in range(5):
11 np.random.seed(1)
12 print(np.random.rand())
python
1第一个for循环
20.417022004702574
30.7203244934421581
40.00011437481734488664
50.30233257263183977
60.14675589081711304
7-----------------
8
9第二个for循环
100.417022004702574
110.417022004702574
120.417022004702574
130.417022004702574
140.417022004702574
bash
第一个for
循环中,只设置了一次seed
,所以之后的随机值都是不一样的。而第二个for
循环中,每次都设置了seed
才得到一样的值。仔细看,可以发现第一个for
循环里第一个随机值和第二个for
循环里的值也是一样的,都是以seed(5)
为种子生成的随机值。
numpy.random.RandomState()
使用
numpy.random.RandomState()
是一个伪随机数生成器。和seed()
一样也是一次有效的,但是它指定了一个state变量,只有在这个state变量下,才会使用RandomState()
的种子。
1# 设置随机种子
2rng = np.random.RandomState(5)
3# 没有使用rng变量
4print(np.random.rand())
5# 使用rng变量
6print(rng.rand())
7rng = np.random.RandomState(5)
8print(rng.rand())
python
这个例子看出,虽然距离RandomState(5)
最近的是np.random.rand()
,但是没有使用RandomState(5)
的种子。