2013-03-18 6 views
0

질문 :
다음 임의 번호 테이블의 숫자가 대규모 공장에서 작업하기 위해 도착한 사람과 일치한다고 가정합니다. 0,1, 2는 흡연자, 3-9는 비 흡연자라고합시다. 많은 도착 후, 흡연자의 총 상대적 빈도를 계산하십시오.올바른 시뮬레이션을 얻는 방법 R

여기 내 흡연자의 상대적인 빈도를 시뮬레이트하는 코드입니다.

simulation<-function(k){ 
    x<-round(runif(k)*10) 
    return (length(x[x<3])/k)} 

> simulation(100) 
[1] 0.27 
> simulation(1000) 
[1] 0.244 
> simulation(10000) 
[1] 0.2445 
> simulation(100000) 
[1] 0.24923 

결과가 왜 나오지 않습니까?

+0

시뮬레이션의 예상 값이 실제로 .25이기 때문에. – Dason

+0

왜? 3/10 = 0.3이라고 생각합니다. –

+0

반올림하기 때문에. 10을 곱한 후 3을 3보다 작은 값으로 반올림 한 후 runif에 의해 생성 된 값을 생각하십시오. – Dason

답변

8

당신이 원하는 모든 0, 1, ..., 9 그때 당신은 당신이 실제로거야 지금이 코드 샘플

sample(0:9, k, replace = TRUE) 

사용하는 번호에 이산 균일 한 분포를 얻을 경우 .05의 확률을 각각 0 또는 10이되고, .10의 확률은 1-9가됩니다.

관련 문제