Numpy随机种子状态不变却生成不同随机数的原因解析
关于NumPy随机数生成器状态的疑问
我正在开展一个使用Monte Carlo方法的项目,研究伪随机数生成中种子的重要性。在使用Python的NumPy随机模块做实验时,我试图理解种子变化对随机性的影响,却发现一个奇特现象:通过numpy.random.get_state()获取状态时,每次运行脚本初始种子不同,但仅变化一次后就全程保持相同,代码如下:
import numpy as np rand_state = [0] for i in range(5): rand_state_i = np.random.get_state()[1] # printing only 3 state numbers, but comparing all of them print(np.random.rand(), rand_state_i[:3], all(rand_state_i==rand_state)) rand_state = rand_state_i
运行后输出:
0.9721364306537633 [2147483648 2240777606 2786125948] False 0.0470329351113805 [3868808884 608863200 2913530561] False 0.4471038484385019 [3868808884 608863200 2913530561] True 0.2690477632739811 [3868808884 608863200 2913530561] True 0.7279016433547768 [3868808884 608863200 2913530561] True
我的疑问是:为何种子状态保持相同,却能为每次采样返回不同的随机值?NumPy是否使用了numpy.random.get_state()之外的其他数据来生成随机数?
内容的提问来源于Stack Exchange,提问作者Tanus Szabo
相关产品推荐
相关产品推荐

