・地獄からの脱出                           GAI 氏

 奈落の底にある地獄に、地上に繋がる梯子がかけられており、今、その梯子の上から3
段目に、落ちそうな状態であなたは足をかけているとします。

 さて、ここに、サイコロを振る閻魔大王が現れ、その都度サイコロを転がす。

 1か2の目を出せば、あなたは梯子を一歩下がる。

 それ以外の目が出れば、あなたは梯子を一歩上がれる。

 もし、自分が居た元の位置から一歩でも下に降りれば、たちどころに、この梯子から落と
され、地獄の底で大焦熱地獄の池に落ち命を落とすという。
(最初、閻魔様が1か2の目を出せば、たちどころに命を落とす。)

 このように地獄のルールが決められているとする。

 さて、あなたが、この梯子を3段登りきり、無事地上まで戻り、地獄からの生還を得られる
確率P3や如何に?

 また、最初に、梯子の上から1000段下にいたとするなら、無事梯子を1000段上り切り、地
上に戻れる確率P1000を%で表現するとき、その値は、小数第2位までを使うと如何ほどか?

 但し、小数第2位以下の部分の数値は全て切り上げで処理してください。
(例 3.010040105(%)-->3.02 で示す。)


 DD++ さんからのコメントです。(令和3年10月5日付け)

 P3 = 2/3 * 4/5 = 8/15

#複雑に見えて、気づけば一瞬なんですね。良問。

 1000段の方はわかりませんけども。


 GAI さんからのコメントです。(令和3年10月5日付け)

 DD++さんの、気付けば一瞬とは異なるかも知れませんが、自分が辿ったルートは、閻魔

が振るサイコロは、上に登れる確率 u=2/3、下に降りる確率 d=1/3 なので、元居た場所か

ら、下にはいかないで上に3段上がれるためには、x軸をuが起こる回数、y軸をdが起こる回

数として、格子点(3,0)、(4,1)、(5,2)、(6,3)、(7,4)、・・・へ辿り着けるルートを探すことに対応して

いるので、数えてみると、

P3=u^3+2*u^4*d+4*u^5*d^2+8*u^6*d^3+16*u^7*d^4+・・・

 =納i=1,∞]2^(i-1)*u^(i+2)*d^(i-1)

  =納i=1,∞]2^(i-1)*(2/3)^(i+2)*(1/3)^(i-1)

  =2/3*納i=1,∞](4/9)^i

  =2/3*(4/9)/(1-4/9)=2/3*4/5=8/15  (=2^3/(2^4-1):この変形は、P4、P5の結果を経て)

で求まるだろうと、そこで、1000段は? いきなりなので、段階を踏んでみる。

 では、4段で、同様に調べてみた。

P4=u4+3*u^5*d+8*u^6*d^2+21*u^7*d^3+55*u^8*d^4+・・・=納i=1,∞]fibonacci(2*i)*u^(i+3)*d^(i-1)

 ここに、 fibonacci(i)=1/sqrt(5)*((1+sqrt(5))/2)^i-((1-sqrt(5))/2)^i) から、

  fibonacci(2*i)=1/sqrt(5)*((3+sqrt(5))/2)^i-(3-sqrt(5))/2)^i)

一方、u^(i+3)*d^(i-1)=(2/3)^(i+3)*(1/3)^(i-1)=(2/3)^3*(1/3)^(-1)*(2/9)^i=8/9*(2/9)^i

なので、求める確率は、

8/9*(1/sqrt(5))*(((2/9)*(3+sqrt(5))/2))^i-((2/9)*(3-sqrt(5))/2))^i)

=8/9*(1/sqrt(5))*((3+sqrt(5))/9)^i-((3-sqrt(5))/9)^i)

 i=1、2、3、・・・、∞ に渡り、和をとると、

gp > α=(3+sqrt(5))/9
%130 = 0.581785330・・・
gp > β=(3-sqrt(5))/9
%131 = 0.084881335・・・

より、

=8/9*(1/sqrt(5))*(α/(1-α)-β/(1-β))

=8/9*(1/sqrt(5))*(α-β)/(1-(α+β)+α*β)

 ここに、 α-β=2*sqrt(5)/9 、α+β=6/9=2/3 、α*β=(9-5)/81=4/81 を上式に代入

して、

=8/9*(1/sqrt(5))*(2*sqrt(5)/9)/(1-2/3+4/81)

=16/81*(81/(81-2*27+4))=16/31(=2^4/(2^5-1))

 同じく、5段では、

P5=u^5+4*u^6*d+13*u^7*d^2+40*u^8*d^3+121*u^9*d^4+・・・=納i=1,∞](3^i-1)/2*u^(i+4)*d^(i-1)

 ここに、 u^(i+4)*d^(i-1)=(2/3)^(i+4)*(1/3)^(i-1)=(2/3)^4*(1/3)^(-1)*(2/9)^i=16/27*(2/9)^i

より、求める確率は、16/27*(1/2)*((2/3)^i-(2/9)^i) で、i=1、2、3、・・・、∞ に渡り和を取る

ことから、

16/27*(1/2)*((2/3)/(1-2/3)-(2/9)/(1-2/9))
=16/27*(1/2)*(2-2/7)=8/27*(2*7-2)/7=8/27*12/7=8/9*4/7=32/63(=2^5/(2^6-1))

 ここまで計算したら、1000段では、

(あくまで予想。どなたか証明下され!、漸化式

  P[n]=(2^n-1)/(2^n-1/2)*P[n-1]

が示せたらいいのに・・・)

 P1000=2^1000/(2^1001-1)=0.5000・・・・・0002333159・・

 これを、%で表し、小数第2位までを切り上げで示せば、50.01


#結構地獄深くまで落っこちても閻魔様は助けて下さるんだな〜。


 DD++ さんからのコメントです。(令和3年10月6日付け)

 3段の場合、1 段上がったところから2回先を考えると、

 確率 (1/3)2=1/9 で下に落ち、確率 (2/3)2=4/9 で生還、

 確率 1−1/9−4/9=4/9 で現状維持

になります。つまり、最初に 1 段上がった状態から助かる確率は、無限級数を考えるまでも

なく (4/9)÷(1/9+4/9)=4/5 なのです。

 4段や5段だと使うのは難しいかな。


 りらひいさんからのコメントです。(令和3年10月6日付け)

 解きました。(無限級数は使っていません。連立方程式を行列で解いただけ。)

 上に登れる確率を u とし、下に降りる確率を d とする。( u+d=1 が成り立っている。)

 N段目からスタートして、0段目到達で生還、N+1段目到達で地獄落ちとなるとき、生還する
確率をP(N)とすると、

 u=1/2 のとき、 P(N) = 1 / (N+1)

 0≦u<1/2 、1/2<u≦1 のとき、 P(N) = u^N * (u-d) / {u^(N+1)-d^(N+1)}

となる。または、どちらの場合であっても、

  P(N) = u^N / {Σ[k=0〜N]u^k*d^(N-k)}


◇ u=2/3, d=1/3 のとき

P(3) = (2/3)^3 * {(2/3)-(1/3)} / {(2/3)^(3+1)-(1/3)^(3+1)}

   = 2^3 * (2-1) / (2^4-1^4) = 2^3 / (2^4-1) = 8/15

P(1000) = (2/3)^1000 * {(2/3)-(1/3)}/{(2/3)^(1000+1)-(1/3)^(1000+1)}

     = 2^1000 * (2-1) / (2^1001-1^1001) = 2^1000 / (2^1001-1)


(コメント) 皆さん、解答と説明、ありがとうございます。樹形図で考えていたら、何が何だか
      途方に暮れてしまいました。これで安心して眠れます...。

 ところで、 log22^1000 / (2^1001-1)≒1000-1001=-1 から、 P(1000)≒1/2 なので、
生還率は、ほぼ5割。なかなかシビアなゲームですね。


 GAI さんからのコメントです。(令和3年10月7日付け)

 そんな一般式が構成可能なんだ!この式を使わせてもらって、閻魔様の匙加減の様子を
見てみました。

gp > P(N,u,d) = u^N /sum(k=0,N,u^k*d^(N-k))
gp > for(n=1,10,print(n";"P(n,1/2,1/2)" = "P(n,1/2,1/2)+0.))
1;1/2 = 0.50000000000000000000
2;1/3 = 0.33333333333333333333
3;1/4 = 0.25000000000000000000
4;1/5 = 0.20000000000000000000
5;1/6 = 0.16666666666666666667
6;1/7 = 0.14285714285714285714
7;1/8 = 0.12500000000000000000
8;1/9 = 0.11111111111111111111
9;1/10 = 0.10000000000000000000
10;1/11 = 0.090909090909090909091
1000;   = 0.00099900099900099900100

gp > for(n=1,10,print(n";"P(n,7/12,5/12)" = "P(n,7/12,5/12)+0.))
1;7/12 = 0.58333333333333333333
2;49/109 = 0.44954128440366972477
3;343/888 = 0.38626126126126126126
4;2401/6841 = 0.35097208010524777079
5;16807/51012 = 0.32947149690268956324
6;117649/372709 = 0.31565913353313174621
7;823543/2687088 = 0.30648158899150306949
8;5764801/19200241 = 0.30024628336696398759
9;40353607/136354812 = 0.29594560256516653039
10;282475249/964249309 = 0.29294835512295918067
1000;                  = 0.28571428571428571429

gp > for(n=1,10,print(n";"P(n,2/3,1/3)" = "P(n,2/3,1/3)+0.))
1;2/3 = 0.66666666666666666667
2;4/7 = 0.57142857142857142857
3;8/15 = 0.53333333333333333333
4;16/31 = 0.51612903225806451613
5;32/63 = 0.50793650793650793651
6;64/127 = 0.50393700787401574803
7;128/255 = 0.50196078431372549020
8;256/511 = 0.50097847358121330724
9;512/1023 = 0.50048875855327468231
10;1024/2047 = 0.50024425989252564729
1000;        = 0.50000000000000000000

gp > for(n=1,10,print(n";"P(n,17/24,7/24)" = "P(n,17/24,7/24)+0.))
1;17/24 = 0.70833333333333333333
2;289/457 = 0.63238512035010940919
3;4913/8112 = 0.60564595660749506903
4;83521/140305 = 0.59528170770820712020
5;1419857/2401992 = 0.59111645667429366959
6;24137569/40951513 = 0.58941824689114661038
7;410338673/696999264 = 0.58872181678516090944
8;6975757441/11854752289 = 0.58843552956165864597
9;118587876497/201571142520 = 0.58831772750027274093
10;2015993900449/3426991898089 = 0.58826923447738014995
1000;                          = 0.58823529411764705882

gp > for(n=1,10,print(n";"P(n,3/4,1/4)" = "P(n,3/4,1/4)+0.))
1;3/4 = 0.75000000000000000000
2;9/13 = 0.69230769230769230769
3;27/40 = 0.67500000000000000000
4;81/121 = 0.66942148760330578512
5;243/364 = 0.66758241758241758242
6;729/1093 = 0.66697163769441903019
7;2187/3280 = 0.66676829268292682927
8;6561/9841 = 0.66670053856315415100
9;19683/29524 = 0.66667795691640699092
10;59049/88573 = 0.66667043004075734140
1000;          = 0.66666666666666666667

以上から、u=2/3、d=1/3が絶妙な匙加減となっていることが分かります。


 りらひいさんからのコメントです。(令和3年10月7日付け)

 スタート地点が最下段ではない場合でも、見た目がきれいな式になりますよ。

 N を正の整数、m を 1 ≦ m ≦ N を満たす整数、p を 0 < p < 1 を満たす実数、q = 1-p
とする。

 地点 0 と地点 N+1 の間に N 段のはしごがかかっており、地点 0 側から1段目,2段目,…,
N段目と数えることにする。

 あなたは、はしごのどこかの段にいて、確率 p で地点 0 側へ1段移動し、確率 q で地点
N+1 側へ1段移動する。

 この移動を繰り返し、地点 0 または地点 N+1 に到達した時点で終了とする。

 初期地点を m 段目としたとき、最終的に地点 0 へ到達する確率を P[N](m) 、地点 N+1
へ到達する確率を Q[N](m) とする。

 このとき、

  P[N](m) = {Σ[k=m〜N]p^k*q^(N-k)} / {Σ[k=0〜N]p^k*q^(N-k)}

  Q[N](m) = {Σ[k=0〜m-1]p^k*q^(N-k)} / {Σ[k=0〜N]p^k*q^(N-k)}

である。

 個人的には、生還あるいは地獄落ちまでにかかる上り下り回数の期待値が気になります。
スタート地点が真ん中あたりで上り下りの確率が1/2に近いと、何回も行ったり来たりしてた
どり着くのが大変になりそうな予感。


 Dengan kesaktian Indukmu さんからのコメントです。(令和3年10月7日付け)

n → ∞ のときに

P(n,7/12,5/12) → 2/7 、P(n,2/3,1/3) → 1/2 、P(n,17/24,7/24) → 10/17 、

P(n,3/4,1/4) → 2/3

となっていまして、ここから推測するに、

 a > b 、u=a/(a+b) 、d=b/(a+b) のときに、

  P(n,a/(a+b),b/(a+b)) → (a-b)/a

となるのかもしれません。この推測を、

 0≦u<1/2, 1/2<u≦1 のとき、 P(N) = u^N * (u-d) / {u^(N+1)-d^(N+1)}

から導くには、いったいぜんたい、どのようにしたらよいのでしょうか。

 御教示頂けると幸いです。


 りらひいさんからのコメントです。(令和3年10月7日付け)

P(n,a/(a+b),b/(a+b))

= (a/(a+b))^n * {(a/(a+b))-(b/(a+b))} / {(a/(a+b))^(n+1)-(b/(a+b))^(n+1)}  … 代入した

= a^n * (a-b) / {a^(n+1)-b^(n+1)}  … 分母と分子に(a+b)^(n+1)をかけた

= (a-b) / {a-b^(n+1)/a^n}  … 分母と分子をa^nで割った

= (a-b) / {a-b*(b/a)^n}  … 分母の第二項を変形した

 ここで、a > b より、 b/a < 1 なので、n → ∞ とすると、b*(b/a)^n → 0 となることから、

 P(n,a/(a+b),b/(a+b)) → (a-b) / a


 Dengan kesaktian Indukmu さんからのコメントです。(令和3年10月7日付け)

 りらひいさん、有り難うございます。お陰さまでスッキリいたしました。


 りらひいさんからのコメントです。(令和3年10月11日付け)

 a[0] = 1、a[1] = A+B、a[n+2] = (A+B)*a[n+1] - A*B*a[n] で定義される数列 {a[n]} があ
る。

 このとき、

  (A+B)*a[m+1]*a[n+1] - A*B*(a[m+1]*a[n]+a[m]*a[n+1]) = a[m+n+3]

となることを示せ。

という問題について、なにかスマートな解き方はあるでしょうか?


 DD++ さんからのコメントです。(令和3年10月11日付け)

 A≠B という仮定をしてよいなら、一般項 a[n] = {A^(n+1)-B^(n+1)}/(A-B) を数学的帰納法
で示してしまうのが一番単純かつ手っ取り早いんじゃないでしょうか?

 A=B も考慮する必要があるなら以下でしょうか。

 a[-1] = 0 と定義すると、n=-1 の場合も含めて漸化式が成り立ちます。

左辺
= (A+B)*a[m+1]*a[n+1] - A*B*(a[m+1]*a[n]+a[m]*a[n+1])
= a[m+1]*{(A+B)*a[n+1] - A*B*a[n]} - A*B*a[m]*a[n+1]
= {(A+B)*a[m] - A*B*a[m-1]}*a[n+2] - A*B*a[m]*a[n+1]
= (A+B)*a[m]*a[n+2] - A*B*(a[m]*a[n+1]+a[m-1]*a[n+2])
・・・・・(帰納的にあと m 回繰り返す)・・・・・
= (A+B)*a[0]*a[m+n+2] - A*B*(a[0]*a[m+n+1]+a[-1]*a[m+n+2])
= (A+B)*a[m+n+2] - A*B*a[m+n+1]
= a[m+n+3]


 りらひいさんからのコメントです。(令和3年10月12日付け)

 DD++ さん、回答ありがとうございます。

 たしかに一般項はすぐに出ますが、場合分けが必要ですし、代入後の計算もそんなにシン
プルではない(複雑でもないですが…)ので、質問してみました。

 質問する前は、問題を次の形で書くことも考えていて、その場合だと、一般項を求めるのに
もひと手間かかってしまいます。なので、漸化式をうまく使う方法があるだろうと思っていまし
た。

 「a[0] = 1、a[1] = p、a[n+2] = p*a[n+1] +q*a[n] で定義される数列 {a[n]} がある。

このとき、p*a[m+1]*a[n+1] + q*(a[m+1]*a[n]+a[m]*a[n+1]) = a[m+n+3] となることを示せ。」

 = (A+B)*a[m+1]*a[n+1] - A*B*(a[m+1]*a[n]+a[m]*a[n+1])
 = a[m+1]*{(A+B)*a[n+1] - A*B*a[n]} - A*B*a[m]*a[n+1]
 = {(A+B)*a[m] - A*B*a[m-1]}*a[n+2] - A*B*a[m]*a[n+1]


 この式変形に思い至らなかったなんてお恥ずかしい限りです。漸化式での置き換えはいく
つか試そうとしていたはずなのに……。ここのところ私の頭は働いていないなあ。


  以下、工事中!



              投稿一覧に戻る