还记得小学的时候,语文课本上有一篇课文“最长的麦穗”,是讲苏格拉底叫他的弟子选一颗最长的麦穗,这原本是一个哲学问题,我也一直深刻地记着那位哲学大师告诉我们的道理:最好的往往很难得到,要尽快选择一个相对好的,莫让机会一去不复返,直到我看到了这样一篇文章:http://www.guokr.com/article/6768/
没想到这样的问题中,尽然蕴藏着神奇的数学法则。
为了验证文章中的数据,我写了一个小程序来进行试验,代码如下:
#!/usr/bin/env python
#-*-coding: UTF-8-*-
import random
import math
person = 30
married = {}
for i in range(1,person+1):
married[i] = 0
top_k = int(round(person/math.e))
for i in xrange(1,10001):
white_horse = range(1,person+1)
random.shuffle(white_horse)
best_in_k = max(white_horse[1:top_k])
for n in white_horse[top_k: ]:
if n > best_in_k:
married[n] = married[n] + 1
break
else:
married[n] = married[n] + 1
for i in range(1,person+1):
print '%d\t\t%d' % (i, married[i])
实验结果与文中所述基本一致。
只可惜,文中所提到的对于37%的公式推导,鄙人未能看懂==
不过从公式可以知道,将x=1/e代入,解得p(k)=1/e,即随着n逐渐变大,这个概率会越来越趋近于37%。
欢迎大家交流与探讨!