`
kmplayer
  • 浏览: 497196 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

平均要取到第几个随机数才会让序列第一次下降

阅读更多
[转载]http://www.matrix67.com/blog/

1,考虑这么一个游戏:不断在区间 [0, 1] 中概率均等地选取随机数,直到所取的数第一次比上一个数小。那么,平均需要抽取多少个随机数,才会出现这样的情况?

答案:
记 Pi 为第 i 次才取到小于前一个数的数的概率。则我们要求的就是
P1 + 2 * P2 + 3 * P3 + 4 * P4 + …

妙就妙在下面这个变形(在继续看下去之前你能想到吗):
      P1 + 2 * P2 + 3 * P3 + 4 * P4 + …
  = (P1 + P2 + P3 + …) + (P2 + P3 + …) + (P3 + …) + …
  = P(取数次数≥1) + P(取数次数≥2) + P(取数次数≥3) + …


显然,取数次数是一定大于等于 1 的。事实上,取数次数也是一定大于等于 2 的。要想取到第 3 个数,则前面两个数必须是递增的,其概率是 1/2 ;取数次数达到了 4 次或者更多,当且仅当前三个数是递增的,其概率为 1/3! = 1/6
因此,本题的答案为:
   1 + 1 + 1/2! + 1/3! + 1/4! + ...

没错,这个问题的答案竟然是 e 。

2,类似的问题:
随便取一个 0 到 1 之间的数,再加上另一个 0 到 1 之间的随机数,然后再加上一个 0 到 1 之间的随机数??直到和超过 1 为止。一个有趣的问题:平均需要加多少次,才能让和超过 1 呢?
答案是 e 次。

    为了证明这一点,让我们先来看一个更简单的问题:任取两个 0 到 1 之间的实数,它们的和小于 1 的概率有多大?容易想到,满足 x+y<1 的点 (x, y) 占据了正方形 (0, 1)×(0, 1) 的一半面积,因此这两个实数之和小于 1 的概率就是 1/2 。
类似地,三个数之和小于 1 的概率则是 1/6 ,它是平面 x+y+z=1 在单位立方体中截得的一个三棱锥。
这个 1/6 可以利用截面与底面的相似比关系,通过简单的积分求得:

      ∫(0..1) (x^2)*1/2 dx = 1/6

    可以想到,四个 0 到 1 之间的随机数之和小于 1 的概率就等于四维立方体一角的“体积”,它的“底面”是一个体积为 1/6 的三维体,在第四维上对其进行积分便可得到其“体积”
       ∫(0..1) (x^3)*1/6 dx = 1/24

    依此类推, n 个随机数之和不超过 1 的概率就是 1/n! ,反过来 n 个数之和大于 1 的概率就是 1 - 1/n! ,因此加到第 n 个数才刚好超过 1 的概率就是
       (1 - 1/n!) - (1 - 1/(n-1)!) = (n-1)/n!

    因此,要想让和超过 1 ,需要累加的期望次数为
       ∑(n=2..∞) n * (n-1)/n! = ∑(n=1..∞) n/n! = e

分享到:
评论

相关推荐

    delphi生成随机数

    //由“种子”初始化的随机数出发,开始产生随机数序列 但是Delphi中的Random()产生的是伪随机数,也就是说,程序的两次运行,Random()产生的随机数是一样的。 先运行一下Randomize,再Random就是真正的随机数了 ...

    DES数据加密

    如果确实不理解如何来产生一个随机数序列,就考虑fibbonacci数列,使用2个双字(64位)的数作为产生随机数的种子,再加上第三个双字来做xor操作。 这个算法产生了一系列的随机数。算法如下: unsigned long dw1...

    你必须知道的495个C语言问题

    1.28 文件中的第一个声明就报出奇怪的语法错误,可我看没什么问题。这是为什么? 1.29 为什么我的编译器不允许我定义大数组,如doublearray[256][256]? 命名空间 1.30如何判断哪些标识符可以使用,哪些被保留了...

    EXCEL集成工具箱V6.0

    【文本转EXCEL】 将文本文件按指定的分隔符号分隔一次性导入到EXCEL文档中。提供两种导入方式。 【EXCEL转文本】 将当前工作表中存储格的内容按指定分隔符号导出为TEXT文本,此为银行代发工资数据与邮局或银行传递...

    《你必须知道的495个C语言问题》

    1.28 文件中的第一个声明就报出奇怪的语法错误,可我看没什么问题。这是为什么? 15 1.29 为什么我的编译器不允许我定义大数组,如double array[256][256]? 15 命名空间 15 1.30 如何判断哪些标识符可以使用,...

    EXCEL集成工具箱V8.0完整增强版(精简)

    【文本转EXCEL】 将文本文件按指定的分隔符号分隔一次性导入到EXCEL文档中。提供两种导入方式。 【EXCEL转文本】 将当前工作表中存储格的内容按指定分隔符号导出为TEXT文本,此为银行代发工资数据与邮局或银行传递...

    LINGO软件的学习

    这里的member1是集的第一个成员名,memberN是集的最末一个成员名。LINGO将自动产生中间的所有成员名。LINGO也接受一些特定的首成员名和末成员名,用于创建一些特殊的集。列表如下: 隐式成员列表格式 示例 所产生集...

    Java范例开发大全 (源程序)

     实例85 寻找指定字符第一次出现的位置 114  实例86 寻找指定字符最后出现的位置 115  实例87 我究竟有多长 116  实例88 替换指定的字符 117  实例89 分割字符串 117  实例90 如何使用substring()方法...

    java范例开发大全(pdf&源码)

    实例85 寻找指定字符第一次出现的位置 114 实例86 寻找指定字符最后出现的位置 115 实例87 我究竟有多长 116 实例88 替换指定的字符 117 实例89 分割字符串 117 实例90 如何使用substring()方法截取子串 118 实例91 ...

    java范例开发大全源代码

     实例85 寻找指定字符第一次出现的位置 114  实例86 寻找指定字符最后出现的位置 115  实例87 我究竟有多长 116  实例88 替换指定的字符 117  实例89 分割字符串 117  实例90 如何使用substring()...

    java范例开发大全

    实例85 寻找指定字符第一次出现的位置 114 实例86 寻找指定字符最后出现的位置 115 实例87 我究竟有多长 116 实例88 替换指定的字符 117 实例89 分割字符串 117 实例90 如何使用substring()方法截取子串 118 实例91 ...

    Lotus公式语言函数简介

    @Unique 带有参数时,通过仅返回列表里第一次出现的每个成员来从文本列表里删除重复值 @UpperCase 将指定字符串里的小写字母转换为大写 @URLGetHeader 从 URL 中返回指定的超文本传输协议 (HTTP) 的标题信息 @URL...

    Java范例开发大全(全书源程序)

    实例85 寻找指定字符第一次出现的位置 114 实例86 寻找指定字符最后出现的位置 115 实例87 我究竟有多长 116 实例88 替换指定的字符 117 实例89 分割字符串 117 实例90 如何使用substring()方法截取子串 118 ...

    C语言FAQ 常见问题列表

    o 2.8 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了。 o 2.9 main() 的正确定义是什么? void main() 正确吗? o 2.10 对于没有初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为 ``...

    Excel函数活用范例大辞典(全新版).何先军.2015-2(带书签高清文字版).pdf

    085 去掉一个最高分和最低分求参赛选手平均得分 169 ◎最值函数 171 086 突出显示销量最高的数据 171 087 求月销售量低于平均销量的最大销量的商品名称 173 088 分别求1~4月排前3的销售量 175 089 制作...

    C#全能速查宝典

    1.4.11 First函数——返回查询结果的第一个记录 55 1.4.12 FirstDayOfWeek属性——获取或设置一周中的第一天 56 1.4.13 Format方法——格式化字符串 56 1.4.14 GETDATE函数——返回当前系统日期和时间 58 1.4.15 ...

    你必须知道的495个C语言问题(PDF)

    1.8 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了。. . 4 1.9 main() 的正确定义是什么? void main() 正确吗? . . . . . . . . . 4 1.10 对于没有初始化的变量的初始值可以作怎样的假定?如果一个全 ...

    世界500强面试题.pdf

    1.5.6. 输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数 ....... 116 1.5.7. 输入一个表示整数的字符串,把该字符串转换成整数并输出.............. 118 1.5.8. 给出一个数列,找出其中最长的单调...

Global site tag (gtag.js) - Google Analytics