均匀分布模拟结果异常:是代码Bug还是统计悖论?
问题原因
你观测到的最后一列间隙分布和其他列不同,本质是你计算环形间隙的逻辑存在偏差,相当于把两个独立的间隙合并成了最后一列的值
- 你当前的逻辑是在
[0,1)线段上生成10个均匀随机点,排序后只计算了9个相邻点之间的独立间隙(即输出的前9列),最后一列的跨0点间隙,实际上是「0到第一个点的间隙」和「最后一个点到1的间隙」两个独立间隙的和。 - 从概率统计的角度,线段上n个均匀分布的点会把线段切分为n+1个独立同分布的间隙,每个间隙的期望为
1/(n+1)。n=10的场景下,单个间隙的期望约为0.09,而最后一列是两个这种间隙的和,期望提升到约0.18,自然会出现大值出现概率更高、极小值少见的情况,和你观测到的输出完全吻合。
修正方法
如果需要得到10个分布完全一致的环形间隙,可以任选以下一种方案修改:
- 每轮生成并排序点后,随机选择一个间隙作为跨0点的间隙,不要固定把合并的首尾间隙放在最后一列输出
- 改用环形均匀点生成逻辑:生成11个独立指数分布随机数,归一化后得到的10个间隙就是完全同分布的环形间隙
内容的提问来源于stack exchange,提问作者APA
相关产品推荐
相关产品推荐

