2014-11-10 3 views
0

나는 이와 같은 R 코드를 가지고 있습니다.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 

나도 몰라 몇 번이나 각각의 분포가 새 번호를 요구 입니다. 그래서 배열로 저장할 수 없습니다.

제안 사항? 어쩌면이 같은

+0

질문에 의미가 없습니다. 다른 배포판을 원하면'runif'에 다른 매개 변수를 전달해야합니다. 씨앗은 당신이 고려해야 할 것이 아닙니다. 또한, 당신이 이것을 달성하기를 원하는 것을 설명해야합니다. 중첩 된 while 루프는 성능면에서 치명적입니다. – Roland

+1

또한'runif (0,1)'은 길이가 0 인 벡터를 반환 할 것입니다. – Thomas

+1

퍼포먼스 스탠드 포인트에서 많은 양의 난수를 생성하고 그걸 그릴 것입니다. 가능한 모든 숫자를 생성하여 모든 가능성을 보장하십시오. 이것이 메모리 사용으로 인해 가능하지 않다면, 나는 단순히 100000 난수를 생성하고 루프 내에서 모두 사용되었는지 확인합니다. 그렇다면 새 번호를 생성하십시오. 그러나 그것은 일반적으로 더 많이, 나는 당신의 질문이 다소 모호하다는 것을 @Roland에 동의합니다. –

답변

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.

관련 문제