nbhkdz.com冰点文库

两道骰子问题(数学概率问题)


题目一

题目: 一个骰子,6 面,1 个面是 1, 2 个面是 2, 3 个面是 3, 问平均掷多 少次能使 1、2、3 都至少出现一次。 题目:一个骰子,6 面,1 个面是 1, 2 个面是 2, 3 个面是 3,问平均掷多少 次能使 1、2、3 都至少出现一次。 解:(没学过《组合数学》的请略过) 设 P(N=n)表示第 n 次(n>2)抛出后 1

,2,3 都出现的概率,问题要求 n 的 期望 E(N=n).掷 1 的概率 p=1/6,掷 2 的概率 q=1/3,掷 3 的概率 r=1/2.

写程序求解

#include <iostream> using namespace std; float f(float x) { return (1/(1-x)/(1-x)-1-2*x); } int main() { float p=1.0/6,q=1.0/3,r=1.0/2,e; e=r*(f(p+q)-f(p)-f(q))+p*(f(q+r)-f(q)-f(r))+q*(f(p+r)-f(p)-f(r)); cout<<e<<endl; return 0; } 在 Visual Studio 下的运行结果为:7.3 答案 7.3

题目二

假设有一个硬币,抛出字(背面)和花(正面)的概率都是 0.5,而且每次抛硬 币与前次结果无关。现在做一个游戏,连续地抛这个硬币,直到连续出现两次字 为止,问平均要抛多少次才能结束游戏?注意,一旦连续抛出两个―字‖向上游戏 就结束了,不用继续抛。

一个经典的概率问题:平均需要抛掷多少次硬币,才会首次出现连续的 n 个正 面?它的答案是 2^(n+1) - 2 。取 n=2 的话,我们就有这样的结论:平均要抛掷 6 次硬币,才能得到两个连续的正面。或许这个期望次数比你想象中的要多吧。 我们不妨试着来验证一下这一结果。由简单的递推可得,所有 1 都不相邻的 k 位 01 串有 Fk+2 个, 其中 Fi 表示 Fibonacci 数列中的第 i 项。 而―抛掷第 k 次 才出现连续两个正面‖的意思就是, k 位 01 串的末三位是 011 , 并且前面 k 3 位中的数字 1 都不相邻。因此,在所有 2^k 个 k 位 01 串中,只有 Fk-1 个 是满足要求的。因此,我们要求的期望值就等于 ∑ (k=2..∞) k * Fk-1 / 2^k 。这个 无穷级数就等于 6 。我怎么算的呢?我用 Mathematica 算的。

显然,当 n 更大的时候,期望值的计算更加复杂。而简单美妙的结论让我们 不由得开始思考, 这个问题有没有什么可以避免计算的巧妙思路?万万没有想到 的是,在赌博问题的研究中,概率论帮了不少大忙;而这一回,该轮到赌博问题 反过来立功了。

设想有这么一家赌场,赌场里只有一个游戏:猜正反。游戏规则很简单,玩家 下注 x 元钱,赌正面或者反面;然后庄家抛出硬币,如果玩家猜错了他就会输 掉这 x 元,如果玩家猜对了他将得到 2x 元的回报(也就是净赚 x 元)。 让我们假设每一回合开始之前,都会有一个新的玩家加入游戏,与仍然在场的 玩家们一同赌博。 每个玩家最初都只有 1 元钱,并且他们的策略也都是相同的: 每回都把当前身上的所有钱都押在正面上。运气好的话,从加入游戏开始,庄家 抛掷出来的硬币一直是正面, 这个玩家就会一 直赢钱;如果连续 n 次硬币都是 正面朝上,他将会赢得 2^n 元钱。这个 2^n 就是赌场老板的心理承受极限—— 一旦有人赢到了 2^n 元钱,赌场老板便会下令停止游戏,关闭赌场。让我们来 看看,在这场游戏中存在哪些有趣的结论。 首先,连续 n 次正面朝上的概率虽然很小,但确实是有可能发生的,因此总 有一个时候赌场将被关闭。 赌场关闭之时,唯一赚到钱的人就是赌场关闭前最后 进来的那 n 个人。每个人都只花费了 1 元钱,但他们却赢得了不同数量的钱。 其中, 最后进来的人赢回了 2 元, 倒数第二进来的人赢回了 4 元, 倒数第 n 进 来的人则赢得了 2^n 元(他就是赌场关闭的原因),他们一共赚取了 2 + 4 + 8 + … + 2^n = 2^(n+1) - 2 元。其余所有人初始时的 1 元钱都打了水漂,因为没有 人挺过了倒数第 n + 1 轮游戏。 另外,由于这个游戏是一个完全公平的游戏,因此赌场的盈亏应该是平衡的。 换句话说, 有多少钱流出了赌场, 就该有多少的钱流进赌场。 既然赌场的钱最 终 被赢走了 2^(n+1) - 2 元, 因此赌场的期望收入也就是 2^(n+1) - 2 元。 而赌场收 入的唯一来源是每人 1 元的初始赌金,这就表明游戏者的期望数量是 2^(n+1) 2 个。 换句话说, 游戏平均进行了 2^(n+1) - 2 次。 再换句话说, 平均抛掷 2^(n+1) - 2 次硬币才会出现 n 连正的情况。

数学解法:

上面这个题目我第一次见到是在 pongba 的 TopLanguage 的一次讨论上, 提出问 题的人为 Shuo Chen,当时我给出了一个解法,自认为已经相当简单了,先来考 虑一下抛硬币的过程:首先先抛一枚硬币,如果是花,那么需要重头开始;如果 是字,那么再抛 一枚硬币,新抛的这枚如果也是字,则游戏结束,如果是花, 那么又需要重头开始。根据这个过程,设抛硬币的期望次数为 T,可以得到关系 T = 1 + 0.5T + 0.5( 1 + 0.5 * 0 + 0.5T) 解方程可得到 T = 6. 由于上面这个方法只能得到期望,而无法得到方差以及具 体某个事件的概率,后来我又仔细分析了一下,推出了概率生成函数为(推导的 过程暂时略过,后面你会看到一个更一般、更简单的推导)

于是可以算出方差 V = G''(1) + G'(1) - G'(1)^2 = 22。将 G(z)根据 Rational Expansion Theorem [CMath 7.3]展开,可以得到需要抛 n 次硬币的概率为

其中 Fn 是 Fibonacci 数列的第 n 项。到这里,我觉得这个问题似乎已经完全解决 了,直到昨天看到 Matrix67 的牛 B 帖。 在此帖中 Matrix67 大牛用他那神一般 的数学直觉一下将需要连续抛出 n 个字的一般情形给解决了, 而且得出的结果相 当简洁:Tn = 2^(n+1) - 2,其中 Tn 为首次出现连续的 n 个字的期望投掷数。这 也给了我一些启发, 我试着将上面的过程进行推广,居然得到一个简单得出人意 料的解法(甚至比上面 n=2 的推导过程还简单)。这个解法的关键在于下面这 个递推关系 Tn = Tn-1 + 1 + 0.5 * Tn 也即是有 Tn = 2 * Tn-1 + 2。由于 T1 = 2,因此可以得到 Tn = 2^(n+1) – 2。上面 的递推关系是怎么来的呢,一个直观的理解是这样的:首先先抛掷 Tn-1 次,得 到连续的 n-1 个字,然后再抛一次,若是字,则游戏结束;否则需要重 头开始, 也就是说又需要 Tn 次。 期望投掷次数已经得出来了,但是我们还想知道方差、恰好需要投掷 m 次的概 率等其它一些更具体的性质。 为了方便理解概率的分布情况,我先用程序生成了 一个概率表如下所示。在下表中,第 n 行、第 m 列的元素为 Pnm,表示首次出 现连续 n 个字的投掷数为 m 的概率。 1/2 0 0 0 1/4 1/4 0 0 1/8 1/8 1/8 0 1/16 2/16 1/16 1/16 1/32 3/32 2/32 1/32 1/64 5/64 4/64 2/64 1/128 8/128 7/128 4/128 1/256 13/256 13/256 8/256 1/512 21/512 24/512 15/512 1/1024 34/1024 44/1024 29/1024

0

0

0

0

1/32

1/64

2/128

4/256

8/512

16/1024

仔细观察上表, 你发现什么有趣的性质没?如果忽略掉分母的话,那么第 n 行恰 好是一个 n 阶 Fibonacci 数列。例如可以考查各行的最后一列,有 第一行:1 = 1 第二行:34 = 21 + 13 第三行:44 = 24 + 13 + 7 第四行:29 = 15 + 8 + 4 + 2 第五行:16 = 8 + 4 + 2 + 1 + 1 怎么解释这个现象呢?我们再来仔细考虑一下掷硬币的过程, 为方便在下文中用 1 表示字,用 0 表示花,于是我们的目标是要恰好使用 m 次投掷,得到连续的 n 个 1. 若第一次的结果为 0, 那么剩下的任务就是恰好使用 m-1 次投掷得到到连续的 n 个 1. 若前两次的结果为 10, 那么剩下的任务就是恰好使用 m-2 次投掷得到到连续的 n 个 1. 若前三次的结果为 110, 那么剩下的任务就是恰好使用 m-3 次投掷得到到连续 的 n 个 1. 若前四次的结果为 1110, 那么剩下的任务就是恰好使用 m-4 次投掷得到到连续 的 n 个 1. … 若前 n-1 次的结果为 1…10(n-2 个 1), 那么剩下的任务就是恰好使用 1 次投掷得 到到连续的 n 个 1. 你或许已经看出来了, 这里实际上是在枚举首次出现 0 的位置。由于首个 0 出现 在位置 i 的概率为 1/2^i,于是得到 Pnm 的递推公式

于是根据初始条件:



,我们可以推出所有事

件的概率。 现在来推一下概率生成函数,设需要得到连续 n 个 1 的投掷数的概率 生成函数为 Gn(z),于是有

根据上面的递推公式和初始条件,可以得到

于是可解得

分别代入 n = 1 和 n = 2 可以得到

以我们前面得到的结果一致, 这证明这个概率生成函数的确是正确的。有了生成 函数后,我们又多了一种计算期望的方式

而方差也可以非常容易的得到

至此,这个抛硬币的问题终于应该算是被完全解决了,完。


两道骰子问题(数学概率问题)

两道骰子问题(数学概率问题)_数学_高中教育_教育专区。题目一: 一个骰子,6面,1个面是 1, 2个面是2, 3个面是3, 问平均掷多少次能使1、2、3都至少出现...

趣味数学106:划拳掷骰子中的概率问题

划拳和掷骰子中的概率问题随着社会的发展,概率问题逐渐被越来越多的人所认识,前面,在“从一 道小学数学题想起的一文中,对这个问题已经谈到过。其实,在人们的日常...

题目8fd1283567ec102de2bd8988

单选题 数学 等可能事件的概率 抛掷两枚均匀的骰子,则出现两个点数之积为奇数的概率( ),两个点数之积为偶数的概率( ) A1, B, C, D, 正确...

高二数学概率习题(个人整理)

高二数学概率习题(个人整理)_高二数学_数学_高中教育...答案: (1) 4 4 (2) 25 5 12.连续掷两次骰子...12 4 (Ⅰ)求乙、丙两人各自做对这道题的概率; ...

概率论:起源于“玩骰子游戏”的数学理论

数学家拉普拉斯所说: "对于生活中的大部分,最重要 的问题实际上只是概率问题. ...同时掷两个骰子,出现点数的和为七的概率是多少?等等.最终,在一本名叫《机 ...

题目4e21efd376eeaeaad1f330d9

填空题 数学 随机事件及其概率 抛掷红、蓝两颗骰子,若已知蓝骰子的点数为3或6时,则两颗骰子点数之和大于8的概率为 。 正确答案及相关解析 正确答案 略 ...

题目8ec189eb172ded630b1cb603

随机掷两枚质地均匀的骰子,它们向上的点数之和不超过5的概率记为p1,点数之和大于5的概率记为p2,点数之和为偶数的概率记为p3,则( )_答案解析_2014年湖北卷...

初中数学 概率题

初中数学 概率题_初三数学_数学_初中教育_教育专区。...随意掷两个均匀的骰子,朝上面的点数之和为 1; D...清你解决下列问题: (l)利用树状图(或列表)的方法...

第二十五章 概率初步(修改)

35)九年级数学概率初步复... 暂无评价 18页 2下载...规律总结: (1)抛硬币、掷骰子问题中,两个同时...在路口汽车随机选择一条道路则它们一次性都选对各 ...