[0, 1]内随机抽取n个不重叠闭区间的概率

  数学 概率论 趣味数学    浏览次数:5598        分享
1

在闭区间[0, 1]内,我们随机取出两点(服从均匀分布)A和B,形成一个新的闭区间[min{A,B}, max{A,B}]。如此反复n次,我们就有了n个随机闭区间。那么这n个闭区间不出现重叠的概率是多大呢?

 

机器小白   2017-05-16 22:13



   2个回答 
8

答案是

$$\frac{2^n n!}{(2n)!}.$$


思路大致如下:

我们是随机按照均匀分布抽取$n$个闭区间的上下界。我们把$n$个区间的下界从小到大排序,也就是$(x_{1,1},x_{1,2}),(x_{2,1},x_{2,2}),\cdots,(x_{n,1},x_{n,2})$,满足$x_{1,1}<x_{2,1}<x_{3,1}<\cdots < x_{n,1}$。

在这种情况下,唯一能够达到所有闭区间不重叠的情况是

$$x_{1,1} < x_{1,2} < x_{2,1} < x_{2,2} < x_{3,1} < x_{3,2} < \cdots < x_{n,1} < x_{n,2}.$$

因为我们只在乎其排序,而且均匀随机抽样。这个问题就等价于从集合$\{1,2,3,\cdots,2n\}$中无放回的抽样。

符合不重叠的唯一可能性是

$$x_{1,1}=1,x_{1,2}=2,x_{2,1}=3,\cdots,x_{n,1}=2n-1,x_{n,2}=2n,$$

而所有的可能性一共有

$$\frac{(2n)!}{2^n n!}.$$

然后就可以得到概率。


SofaSofa数据科学社区DS面试题库 DS面经

高代兄   2017-05-20 11:18

所有的可能性一共有,这个公式的每一项有人帮忙解释下吗? - Neil   2020-08-13 09:44
2

我用python验证了下高代兄的答案

import math
import pandas as pd
import numpy as np

n = 3
rounds = 10000
p = 0
for m in range(rounds):
    bounds = pd.DataFrame(columns=['lower_bound', 'upper_bound'])
    for i in range(n):
        bounds.loc[i] = np.sort(np.random.uniform(0, 1, 2))
    bounds.sort_values('lower_bound', inplace=True)
    diff = np.diff(bounds['upper_bound'].values)
    p += np.all(diff <= 0) / float(rounds)
print('simulation', p)
print('true:', ((2 ** n) * math.factorial(n)) / math.factorial(2*n))

得到的结果:

simulation: 0.0675
true: 0.06666666666666667
SofaSofa数据科学社区DS面试题库 DS面经

何立诚   2019-03-08 13:42



  相关讨论

圆环上随机三个点组成一个锐角三角形的概率

关于三门问题的疑问

三个人打牌,大王小王都在同一个人的概率是多大?

pig game expectation

%%timeit

轮流射击先中枪的概率题

一米长的绳子,随机剪两刀,最长的一段有多长?

等车概率题

概率论问题 求(X+Y)/(X-Y)的分布

条件概率证明P(a,b|c) > P(a,b)

  随便看看

推荐开放数据库

matplotlib画图怎么确保横坐标和纵坐标的单位长度一致?

决策树、随机森林中的多重共线性问题

随机森林如何调参?

怎么在matplotlib.pyplot的plot上加上文字?