在最近一项关于在function中设置随机种子的调查中 ,我遇到了一个奇怪的情况。 考虑函数f和g ,每个函数设置随机种子,然后执行一个简单的随机操作: g <- function(size) { set.seed(1) ; runif(size) } f <- function(x) { set.seed(2) ; x*runif(length(x)) } 因为每个函数设置随机种子,我希望每个函数总是具有相同的返回值给定相同的input。 这意味着f(g(2))应该返回与x <- g(2) ; f(x) x <- g(2) ; f(x) 。 令我惊讶的是,情况并非如此: f(g(2)) # [1] 0.1520975 0.3379658 x <- g(2) f(x) # [1] 0.04908784 0.26137017 这里发生了什么?
我有一个Python脚本。 我启发了自己在其他人的代码,所以我最终使用numpy.random模块的一些东西(例如创build一个从二项分布采取的随机数组),在其他地方,我使用模块random.random 。 有人能告诉我两者之间的主要区别吗? 看看这两个文档的网页,在我看来, numpy.random只是有更多的方法,但我不清楚随机数的产生是不同的。 我所要问的原因是因为我需要将我的主程序播种以进行debugging。 但是,除非我在我导入的所有模块中使用相同的随机数字生成器,否则这是行不通的,这是正确的吗? 另外,我在另一篇文章中阅读了关于不使用numpy.random.seed()的讨论,但是我不明白为什么这是一个糟糕的主意。 我真的很感激,如果有人解释我为什么是这样的话。
我对Python中的random.seed()有些困惑。 例如,为什么下面的testing做他们做(一贯)? >>> import random >>> random.seed(9001) >>> random.randint(1, 10) 1 >>> random.randint(1, 10) 3 >>> random.randint(1, 10) 6 >>> random.randint(1, 10) 6 >>> random.randint(1, 10) 7 我找不到这方面的好文档。 提前致谢!