如何让numpy.random.randint生成预期结果?差异原因解析
问题解答
差异和Colab执行次数有关吗?
没关系。np.random.randint生成的是伪随机数,每次结果不同的根本原因是随机数生成器的初始种子不一样,和Colab执行多少次完全无关——哪怕在同一个Colab会话里重复执行,只要没固定种子,结果也会变。
怎么拿到课程里的预期结果?
要复现课程里的随机数组,核心是给NumPy的随机数生成器设置和课程完全相同的初始种子。NumPy的随机函数都是基于种子生成的,种子一致,生成的随机序列就完全一致。
具体操作:
- 在调用
np.random.randint之前,先执行np.random.seed(xxx),这里的xxx就是课程演示时用的种子值。 - 如果你不知道课程用的种子,可以多试几个常见值(比如0、1、42),或者写个简单的循环测试不同种子,直到生成的数组和预期匹配。
举个测试示例:
import numpy as np # 定义课程里的目标数组 target_arr = np.array([[ 3, 9, 4, 10, 9, 2], [ 6, 4, 7, 15, 1, 10], [11, 2, 4, 7, 1, 16], [11, 18, 18, 10, 10, 4], [17, 1, 6, 11, 10, 13]]) # 遍历种子找匹配值 for seed in range(0, 1000): np.random.seed(seed) test_arr = np.random.randint(0, 20, size=(5, 6)) if np.array_equal(test_arr, target_arr): print(f"找到匹配的种子:{seed}") break
找到对应种子后,每次运行前先设置这个种子,就能生成和课程完全一样的数组了。
内容的提问来源于stack exchange,提问作者codebetatester
相关产品推荐
相关产品推荐

