论坛看到的一个随机数面试题

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->无穷。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值