相关疑难解决方法(0)

关于R中的set.seed()的问题

我理解什么set.seed()做什么以及什么时候可以使用它,但我仍然有很多关于功能的问题.以下是一些:

  1. set.seed()如果您set.seed()之前在会话中打过电话,是否可以"重置" 为"更随机"的内容?这甚至是必要的吗?
  2. 是否可以查看R当前使用的种子?
  3. 有没有办法set.seed()允许字母数字种子,可以在random.org上输入它们的方式(确保你处于高级模式,并看到表格的"第3部分",看看我的意思)?

random r

20
推荐指数
3
解决办法
2万
查看次数

使用 Snow/doSNOW 重置内部循环的 R 随机数生成器 (rlecuyer)

我有一个包含内部循环的外部 foreach/dopar 并行循环。内部循环的每个实例都应该处理同一组随机数。其余部分,即外部主体的其余部分和并行实例应照常工作,即具有独立的随机数。

我可以在非并行实现中实现这一点,方法是在内循环开始之前保存 RNG 的状态,并在执行内循环的每个实例之后恢复该状态。请参见以下示例:

library(doSNOW)

seed = 4711

cl = makeCluster(2)
registerDoSNOW(cl)
clusterSetupRNGstream (cl, seed=rep(seed,6))

erg = foreach(irun = 1:3,.combine = rbind) %dopar% {

  #do some random stuff in outer loop
  smp = runif(1)

  # save current state of RNG
  s = .Random.seed

  # inner loop, does some more random stuff
  idx = numeric(5)
  for(ii in seq.int(5)) {
    idx[ii] = sample.int(10, 1)
    # reset RNG for next loop iteration
    set.seed(s)
  }

  c(smp,idx)
}

> print(erg)
              [,1] [,2] [,3] …
Run Code Online (Sandbox Code Playgroud)

random parallel-processing r montecarlo snow

5
推荐指数
1
解决办法
430
查看次数

标签 统计

r ×2

random ×2

montecarlo ×1

parallel-processing ×1

snow ×1