【发布时间】:2020-07-17 15:22:06
【问题描述】:
给定相同的种子,是否有可能预测一个输出与另一个不同类型和范围的输出?
例如
np.random.seed(100)
x = np.random.randint(0, 16, 2)
np.random.seed(100)
y = np.random.randint(0, 256)
在此示例中,我将 x 作为 2 元素整数数组,范围为 0-15,y 作为整数标量,范围为 0-255。
我的问题是笼统的,不限于上面的例子,在什么情况下可以预测y给定x?假设观察者知道x、x 和y 的类型和范围,但不知道种子本身。
任何关于可预测性的充分或必要条件的讨论都是有用的。
【问题讨论】:
-
不知道种子?我不这么认为,伪随机数的意义在于,如果不弄清楚种子,几乎不可能进行预测,但这在很大程度上取决于内部使用的算法。
-
哦,等一下,您在这两种情况下都只生成一个数字!好的,那么也许,它需要了解 numpy 随机性的内部知识。
-
如果你不知道种子,你只能得到x的1个数字,那么我认为不可能计算出y,因为这需要猜测种子,鉴于您的上述情况,我认为这是不可能的。
-
不,但您可以从
x[0]中很好地猜测y。在上面的示例中,y将是一个值,例如y % 16 == x[0]。所以给定1002的种子,x将是[7, 1]而 y 将是103,这与 7 mod 16 一致。