我有一个这样的R代码。
D1 <- runif(0,1);
D2 <- runif(0,1);
U1 <- runif(0,1);
U2 <- runif(0,1);
但我不希望Ds和我们使用相同的发行版!!
我该怎么做这样的事情?
distrD <- rand(seed1)
distrU <- rand(seed2)
D1 <- distrD.runif(0,1);
D2 <- distrD.runif(0,1);
U1 <- distrU.runif(0,1);
U2 <- distrU.runif(0,1);
distr_D <- rand(seed1)
distr_U <- rand(seed2)
nD1 <- distr_D.runif(0,1);
nU1 <- distr_U.runif(0,1);
nU2 <- distr_U.runif(0,1);
nD2 <- distr_D.runif(0,1);
给出随机数字:
nD1 == D1
nD2 == D2
nU1 == U1
nU2 == U2
我事先并不知道每次分发的次数 问了一个新号码。所以我无法将其存储在数组中。
建议?
答案 0 :(得分:1)
也许是这样的:
library(rngtools)
Dseeds <- RNGseq(2, seed = 1)
Useeds <- RNGseq(2, seed = 2)
RNGseed(Dseeds[[1]])
D1 <- runif(1, 0, 1)
RNGseed(Dseeds[[2]])
D2 <- runif(1, 0, 1)
RNGseed(Useeds[[1]])
U1 <- runif(1, 0, 1)
RNGseed(Useeds[[2]])
U2 <- runif(1, 0, 1)
RNGseed(Dseeds[[1]])
nD1 <- runif(1, 0, 1)
RNGseed(Useeds[[1]])
nU1 <- runif(1, 0, 1)
RNGseed(Useeds[[2]])
nU2 <- runif(1, 0, 1)
RNGseed(Dseeds[[2]])
nD2 <- runif(1, 0, 1)
nD1 == D1
#[1] TRUE
nD2 == D2
#[1] TRUE
nU1 == U1
#[1] TRUE
nU2 == U2
#[1] TRUE
尽可能多地抽取种子(可能需要高估)。如果您需要更多,可以使用RNGseq(n, Dseeds[[2]])[-1]
。
当然,最好绘制两个随机数样本(每次设置种子)并在生成每个样本后存储种子,以便在需要产生额外时将种子重置为该值其中一个样本的randoms。