查看: 1100| 回复: 2
跳转到指定楼层
上一主题 下一主题
收起左侧

请教一道算法题

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
从(0,1)中随机抽取N个实数, 问 count 的期望值。(新的随机数大于前面所有数的个数的期望)。

每个随机数都是在(0,1)区间里面取值直到N个随机数。M记录的是当前最大的随机数。问的是在N次取值中会有几次M的值(期望值)会改变(M是递增的)。

其实就是说N个数的序列,新加入个数比前面的数都大的个数的期望。比如从(1,10)随机取整数取十个:
2,3,1,2,4,3,6,5,8,7
cnt = 5

想了很久没有头绪。想请教下思路。谢谢!

count = 0;
M = -∞ ;
for i = 1 to n {
  xi=rand() ; // float from (0,1)
  if (xi > M) then {
  M = xi;
  count + +;
  }
}


上一篇:设计一个 airplane reservation 的题
下一篇:subarray sum 用js怎么做
推荐
stellari 2018-9-25 13:25:05 | 只看该作者
全局:
简单地说,只要你能求出“当第i号元素为k时,它是1~i号元素中最大数字的概率”p,这道题就很容易做。

比如,“2号元素为k时,它是目前最大数字"等价于“1号元素<k”,而后者的概率是k,所以前者的概率p也是k。那么,要求出“第2号元素是目前最大数字”的概率,只需考虑2号元素取所有k (0~1)的情况,即∫ p dk = ∫ k dk = 1/2。(稍微准确一点写的话,就是P(x2 is Max | x2 = k) = k => P(x2 is Max) =  ∫  P(x2 is Max, x2 = k) dk = ∫  P(x2 is Max | x2 = k) p ( x2 = k ) dk = ∫ k * 1 dk )既然2号元素有1/2的概率是当前最大,那也就是说,2号位置上出现Max的期望个数是0.5。

p(“3号元素为k时,它是目前最大数字")==p(“1号元素<k”并且“2号元素<k”) = p(“1号元素<k”) * p(“2号元素<k”) = k^2,积分得 ∫ k^2 dk = 1/3,即3号位置上期望能出现0.333...个Max

同理,第i位置上出现Max的期望个数是1/i个。因此,N个位置上总共出现Max的期望个数是(1 + 1/2 + 1/3 + .... 1/N)

比如当N=10时,结果大概是2.93。你可以自行编写模拟程序验证这个结果。

评分

参与人数 1大米 +3 收起 理由
步惊云 + 3 贼牛逼, 先顶了再看

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表