R: 来自独立随机生成器的样本

  • 本文关键字:样本 随机 独立 r random
  • 更新时间 :
  • 英文 :


我有一个这样的R代码。

D1 <- runif(0,1); 
D2 <- runif(0,1); 
U1 <- runif(0,1); 
U2 <- runif(0,1); 

但我不希望Ds和Us使用相同的分发!!

我怎么能做出这样的行为?

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 

我事先不知道每次分发有多少次要求一个新号码。所以我不能将它存储在数组中。

建议?

可能是这样的:

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]的东西。

当然,最好绘制两个随机数样本(每次设置种子),并在生成每个样本后存储种子,以便在需要为其中一个样本生成额外随机数时将种子重置为该值。

最新更新