NumPy - 随机种子在样本量变化时不起作用?

NumPy - Random Seed not working when sample size changes?

谁能帮我理解为什么当我更改样本量(比如从 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.