如何在R中获得正确的模拟

it_*_*ure 0 r

问题:
假设以下随机数表中的数字对应于到达大型工厂工作的人员.设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
Run Code Online (Sandbox Code Playgroud)

为什么我不能得到结果0.3?

Das*_*son 8

如果您只想在数字0,1,...,9上获得离散均匀分布,那么只需使用样本

sample(0:9, k, replace = TRUE)
Run Code Online (Sandbox Code Playgroud)

使用你现在拥有的代码,你实际上得到的概率为0.05,每个得到0或10,概率为.10,得到1-9.