cloud_wei 掷均匀硬币直至第一次出现接连两个正面为止,这时共掷了n次的概率是: [1/ (2*sqrt(5) )] *[( (1+sqrt(5)) /4) ^(n-1) -- ( (1-sqrt(5)) /4) ^(n-1)] 这题的解法是全概率公式得到递推公式,是个差分方程,求通解并带入特解可得知,很像斐波那契数列的通项公式。 这个题稍稍变了一下,就复杂了不止一个数量级,上面的思想还是可以用的。算了一个多小时,无果 [s:12] [s:15] 古典概率有很多很难算的题,这个是一个,并且估计表达式很复杂,一般的技巧也没用。
cloud_wei 模拟比较容易,参见益辉的英文博客:http://yihui.name/en/2009/08/counterintuitive-results-in-flipping-coins/ 听过一个词叫“耦合”,不知用在这个题中算不算恰当。
微微 貌似HTT的期望次数更小,容易算一些~ 设H=1,T=0,模拟投币结果为序列x,计算部分和序列s=cumsum(x),下面是观察部分和序列得到的思路: 设连抛n次后,才在接下来的三次中首度出现HTT,不妨设s(n)=k,s(n+1)=k+1,s(n+2)=k+1,s(n+3)=k+1 (k from 0 to n)。这也意味着——部分和序列的前n项中不会出现2个以上的相同自然数,因此可以计算部分和序列的前n项存在多少种情况。 得到的方程是……额……想请问怎样贴方程的图片? 第一次做时,竟然把期望次数弄成小数:50%的可能性赢得1元,那么期望收益为0.5元;50%的可能性在第一次抛出正面,那么期望次数为0.5?于是我囧了……[s:12] 好容易才转过这个惯性思维的弯……
微微 呵呵,照ypchen说的弄好了公式,然后再次修改一下结果(应该分奇偶的,合成一个写了,所以求和符号中有非整数) 用R算了n取1到20的值: p<-c() for (n in 1:20) { k1<-0:(n/2) t1<-sum(2^k1) i=1 cc=c() for (k2 in n:((n-1)/2+1)){ for (r in 0:(n-k2)){ cc=choose(k2,r) i=i+1 } } t2<-sum(cc) p[n]<-(t1+t2)/(2^(n+3)) } ##p并非抛n次的概率而是n+3的概率,故将前3次补上 P<-c(0,0,0.125,p) 算出来的概率是递减的。为了验证,我把这个结果同cloud_wei给出的近似解进行了比对(事实上两道题的情况一模一样),结果一致。 HTH可以用相同的思路:部分和序列中可能有两个以上个连续相同值,但不会有两个连续相同值。 问题是,怎样从概率得到期望次数? 试试对比概率的图片能不能发上来……
lfy1984 我认为GERT方法(又叫图解评审技术)可以比较好地解决这个问题,GERT方法主要是利用流线图理论、梅森公式以及矩母函数等相关概念及方法。 我在word中写了一下求解过程,具体见附件,供大家参考
lfy1984 我接着使用GERT方法计算了一下,我得到的结果是: 一直抛到出现HTT(正反反)和HTH(正反正)的期望次数分别是8次、10次。 我认为这个结果应该算是精确值,具体计算过程见附件,供大家参考。
yihui 太强了!和模拟值基本上一样,不过我对GERT(http://en.wikipedia.org/wiki/Graphical_Evaluation_and_Review_Technique)还不太了解,维基百科上说这个方法貌似不常用啊,飞燕兄能否抽空写一篇文章完整说明一下这个问题呢?多谢多谢!
lfy1984 好的,没问题! 由于我的硕士论文就是使用GERT方法求解一系列复杂可靠性系统的可靠度,所以遇到类似问题总喜欢先用GERT方法试试。这几天我再整理一下,然后把GERT方法详细地向大家介绍一下。