2015-02-04 5 views
1

좋아, 내가 미리 계산 한 사전 확률에 따라 임의의 부울을 만들 필요가있다. 현재이 같은 일을하고있다 : 이것은 물론 잘 작동R에서 가중치 무작위 부울을 만드는 빠른 방법

sample(0:1,1,replace=T, c(0.6, 0.4)) 

, 문제는 내가 시간이 수백만을 할 필요가있다 (다른 가중치마다 기초 - 예를 들어 0.6,0.4 간단한). 물론 그것을 sapply로 싸서 병렬 처리했는데 작동하지만, 수천만 개 이상을 처리해야 할 수도 있습니다. sample() 명령보다 가중치가있는 임의의 부울을 생성하는 더 빠른 방법이 있는지 궁금합니다.

+0

페이지의 ' – Andrie

+0

Aha-가 알고하지 않은 이항 분포에서 샘플링 rbinom' 여기에

간단한 샘플을 만드는 방법이다 명령! 나는 그것을 시도하고 속도 comparsion을 할 것입니다. 감사! – user2498193

답변

3

이항 분포에서 샘플링하고 있으며이 작업을 수행하는 기본 제공 함수는 rbinom()입니다.

rbinom(n=10, size=1, prob = c(0.6, 0.4)) 
[1] 0 1 0 0 0 1 1 1 1 1 

타이밍 :

> system.time({ 
+ x <- rbinom(n=2.5e6, size=1, prob = c(0.6, 0.4)) 
+ }) 
    user system elapsed 
    0.17 0.00 0.17 
> str(x) 
int [1:2500000] 1 0 1 1 1 0 1 0 0 1 ... 
+0

안녕하세요, 다시 Andrie. 예, 훨씬 빨랐습니다. 280 초 샘플을 166 초 (6 코어에 걸쳐)까지 만들 수있었습니다. 감사합니다. – user2498193

+0

@ user2498193 뭔가 잘못하고있는 중입니다. 내 컴퓨터에서 이것은 단일 코어에서 0.17 초가 걸립니다. – Andrie

+0

'as.numeric (runif (n)> 0.6)'이 더 빠릅니까? –

관련 문제