我有兴趣从分布在 2 个区间的均匀分布中抽取随机样本:从 -2 到 -1 和从 1 到 2。属于这些区间的任何值都应该具有相等的采样概率,而另一个值(例如从 -1 到 1)被采样的概率应该为 0。
runif
函数只接受单个数字作为上限和下限的参数。因此,不可能从两个区间生成该函数样本。
另一种选择是运行两个 runif
函数,一个在 -2 到 -1 的区间上,一个在 1 到 2 的区间上。但是,在这种情况下,我明确地这样做了在每次抽奖中,每个区间抽取的号码数量相等。
我想让它发生变化,虽然平均而言正数和负数的数量大致相同,但我仍然需要看到一些随机变化,例如从正区间中抽取更多数字,反之亦然。
最佳答案
编辑:由于我的第一个答案导致正值和负值的数量完全相等,这里是另一种执行 runif
3 次的方法:
ifelse(runif(1000)>0.5, runif(1000,-2,-1), runif(1000,1,2))
似乎没有记录,但实验让我:
runif(1000, min=c(-2, 1), max=c(-1, 2))
例子:
hist(runif(1000000, min=c(-2, 1), max=c(-1, 2)))
关于r - 从具有间隙的均匀分布中抽取随机样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75436827/