http://bbs.byr.cn/#!article/WorkLife/938361?p=1
一个程序可以生成0-1的随机数,随机数是小数而且位数不限
所有生成的数排成一个序列,如果新生成的数比前一个数大,则序列停止生成,问序列长度的期望是多少
大神很多,很多很牛的回答。
摘抄部分如下:
1+2 * C(n, 2)/A(n, 2) + 3 * C(n, 3)/A(n, 3) + ... + i * C(n, i)/A(n,i) + ... = 1+2 * 1/2! + 3 * 1/3! + ... + i * 1/i! + ... = 2 + 1/2! + 1/3! + 1/4! + ... + 1/i! + ... = e(泰勒级数)
有一段python代码:
from time import time
from random import random
def ra():
randomlist=[]
randomlist.append(random())
while 1:
new=random()
randomlist.append(new)
if new>randomlist[-2]:
le=len(randomlist)
#print randomlist
#print le
return le
break
else:
pass
def count(n):
count=0
for i in range(n):
count+=ra()
return count/float(n)
if __name__=="__main__":
#start_time=time()
print count(10000000)
#print time()-start_time
遇到无穷数的问题时,可以假设为一个有限数,然后去近似结果,假设为有限的数目n,然后n->无穷。