【发布时间】:2020-10-29 17:59:25
【问题描述】:
a = (np.random.rand(10) > 0.1).astype(int)
b = np.random.binomial(1, 0.9, 10)
c = np.random.choice([0, 1], 10, [0.1, 0.9])
numpy 中至少有 3 种不同的方式,通过它们我可以获得 0 和 1 的数组(它们以一定的概率 p 相加(例如 p=0.9))。当我使用np.random.seed(1) 时,某些方法总是返回相同的数组。但是,即使使用相同的种子,上述所有方法都会创建不同的数组。发生这种情况是因为它们都有不同的 PRNG 算法,还是只是其中一些不受 np.random.seed(1) 的影响?
【问题讨论】:
-
当给定相同的种子时,每个方法是否总是创建与该方法先前运行相同的数组?换句话说,它们只是彼此不同但仍然自洽吗?
-
这是因为他们使用随机数流执行不同的计算以选择值。
-
是的,它们是自洽的,彼此不同