python-numpy随机种子 Jun 8, 2020 · python · 分享到: 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()) 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 第一个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()) 10.00011437481734488664 20.22199317108973948 30.22199317108973948 这个例子看出,虽然距离RandomState(5)最近的是np.random.rand(),但是没有使用RandomState(5)的种子。