NumPy-样本大小更改时随机种子不起作用吗?

问题描述

有人可以帮助我理解为什么当我将样本大小从3000更改为5000时,以下代码为何不能使random_list_2保持相同吗?

import numpy as np
np.random.seed(2)
sample_size = 3000

random_list_1 = np.random.randint(low = 1,high = 3,size = sample_size).tolist()
random_list_2 = np.random.randint(low = 100000,high = 1000000000,size = sample_size).tolist()

解决方法

种子只是RNG(随机数生成器)的起始值。您生成的每个随机数都会更新种子。指定起始种子时,您将获得确定性,可重复的种子值序列。

更改样本大小时,将更改randint调用中的更新数量。第二个调用以前按此顺序从值3001开始,现在它从5001开始。

random_list_1 = np.random.randint(low = 1,high = 3,size = sample_size).tolist()
random_list_2 = np.random.randint(low = 100000,high = 1000000000,size = sample_size).tolist()

如果将sample_size替换为1000,则会看到这1000个随机整数与原始(大小为3000)调用的最后1000个数字相同。在这种情况下,您将获得那1000个和另外4000个新整数。

如果要维护random_list_2,则需要为其提供一个稳定的种子:要么为其提供单独的种子,要么切换呼叫顺序。切换顺序只会将相同的效果转移到random_list_1