这篇文章略有不同,在这里我们将做个数学题。许多人可能会自己解决,或在一些论坛上找到答案。我相信这是我们很多人真正喜欢的问题。因为,这个看似简单的、基本的问题背后蕴藏着深刻的数学哲理。
问题陈述我们玩以下游戏:
- 设S = 0。
- 从[0,1]区间均匀随机地选取一个实数x。
- 设S = S + x。
- 如果S > 1,则停止,否则请执行步骤2。
我要澄清的是,上述步骤2中的每个随机选择都是独立的。
现在的问题是:
我们所选择的随机数的期望数目是多少?换句话说,在过程终止之前,我们将执行步骤2的预期次数是多少?
我鼓励所有的读者在这里停下来,花几分钟思考一下如何解决上面的问题。
一个简单的计算实验在深入研究这个问题的解决方案之前,我们或许可以先试着了解一下答案是什么样子的。由于所描述的过程非常简单,我们可以很容易地对其进行编程。下面是这个问题的Python代码:
import random
def PlayGame(n):
count = 0
for i in range(n):
S = 0.0
while S < 1:
S = S + random.uniform(0,1)
count = count + 1
return (count/n)
def main():
n = 1000000
res = PlayGame(n)
print("The expected number is " + str(res))
if __name__ == "__main__":
main()
运行代码,我得到了一个答案:
解这个问题让Y表示在执行过程中我们必须进行的选择的期望数量。Y是一个取整数值的随机变量。用期望的定义,我们有:
上面等式的右边有一种很方便的重写方法,就是这样:
我们现在关注我们得到的最后一个双求和并观察它:
因此,我们得出结论:
换句话说,我们把原来的问题简化为下面这个问题。
从[0,1]区间均匀随机抽取的k个独立实数的和不大于1的概率是多少?
为了回答上述问题,我们定义了以下集合,称为(k-1)维单纯形:
我们还定义了一个非常密切相关的集合,即:
为了了解为什么上述集合是相关的,我们观察以下内容。给定[0,1]区间内的k个随机实数(实验的每个可能结果),即每个实数k元组对应于单位超立方中的一个点,即:
由于我们是均匀随机地抽取数字,一个事件发生的概率直接对应于实现该事件的超立方体中各点的体积。因此,我们可以写:
因为 vol(Hᵏ)= 1。我们得出结论,剩下要计算的是集合Qᵏ的体积。下面的结果是一个众所周知的定理。虽然它的证明很简单,但为了使说明不那么复杂,我们跳过它。
- 当k = 2时,上述定理对应于红三角形的面积,其中包含所有加起来不超过1的数对。很容易看出,三角形的面积是单位正方形面积的一半,所以它是1/2 。
把所有东西放在一起,我们就得到了:
这对应于指数函数e^x的泰勒展开式,在x = 1处取值。对于每一个实数x:
代入x = 1,我们得到:
因此,我们原来的问题的答案是欧拉常数,e。
想了解更多精彩内容,快来关注老胡说科学