已知随机种子1234及生成的y值,能否反推R语言代码中的x值?
能否根据已知的y、随机种子和代码反推x的值?
当然可以推导出x=5,原因很简单:
- 当设置了固定的随机种子
set.seed(1234)后,R里rnorm()生成的随机数是完全确定的。我们可以先算出这个种子下,标准正态分布(mean=0, sd=1)生成的数值:运行set.seed(1234); rnorm(1)会得到-1.2070657。 - 原代码里
y <- rnorm(1, mean = x, sd = 0.1),这个命令的本质是y = x + 0.1 * z,其中z就是上面那个固定的标准正态随机数。 - 已知y的值后,只需要把公式变形:
x = y - 0.1 * z,代入z的具体数值就能算出x。比如实际运行原代码得到的y是5 + 0.1*(-1.2070657) = 4.879293,反过来用这个y计算x就是4.879293 - 0.1*(-1.2070657) = 5,完全准确。
固定种子让随机数生成变成了可复现的确定过程,只要知道结果y,就能逆向算出原本的x。
内容的提问来源于stack exchange,提问作者温泽海
相关产品推荐
相关产品推荐

