【发布时间】:2013-11-19 23:06:23
【问题描述】:
我需要生成一个由“随机”数字组成的向量,但它们需要是完全确定的。数字来自的分布并不那么重要。在 R 中执行此操作的简单方法是什么?
不使用runif之类的原因是每次调用它都会返回不同的序列。
不生成一个序列(使用runif)并重用它的原因是调用是在不同的机器上进行的。我可以将序列硬编码到脚本中,但所需序列的长度在设计时是未知的,因此基于一些硬编码种子的伪随机序列更可取。
【问题讨论】:
我需要生成一个由“随机”数字组成的向量,但它们需要是完全确定的。数字来自的分布并不那么重要。在 R 中执行此操作的简单方法是什么?
不使用runif之类的原因是每次调用它都会返回不同的序列。
不生成一个序列(使用runif)并重用它的原因是调用是在不同的机器上进行的。我可以将序列硬编码到脚本中,但所需序列的长度在设计时是未知的,因此基于一些硬编码种子的伪随机序列更可取。
【问题讨论】:
您知道set.seed() 命令吗?
R> set.seed(42); runif(3)
[1] 0.914806 0.937075 0.286140
R> set.seed(42); runif(3) # same seed, same numbers
[1] 0.914806 0.937075 0.286140
R> set.seed(12345); runif(3) # different seed, different numbers
[1] 0.720904 0.875773 0.760982
R>
【讨论】:
还有SoDa package(和manual [PDF])允许您包装其他操作并恢复开始和结束种子。它只是set.seed() 的包装,但您可以更轻松地自行检查(例如在单元测试中)。
【讨论】: