2021年3月21日日曜日

5D6などの確率

2D6で出る目の和の確率は簡単なわけですが、21さんのtwitterで出された問題

 https://twitter.com/rubbishdog21/status/1368921996021485569

「サイコロ5個振って、うち1個が2,2,3,4,5,6のときの出る目の合計の確率が知りたい」は素朴にやるとちょっと大変、普通に5D6でも大変ですし、3D6でも5=1+1+3=1+2+2みたいな組み合わせを全部考えないといけないので結構大変。こういうのは次のように考えると少し楽になります。

n個のダイスを振るとして、\(\sum_{d_1,\dots,d_n}x^{d_1+\dots+d_n}\)のk次の係数が出た目の和がkになる場合の数です。

この式は\(\sum_{d_1}x^{d_1}\dots\sum_{d_n}x^{d_n}\)と分解できて、結局\((\sum_dx^d)^n\)です。nを決めて\((x+x^2+x^3+x^4+x^5+x^6)^n\)を計算すれば良いのですが、それは人間技ではないので計算機に任せます。n=3として、Pythonならこんな感じで3行。

from sympy import *
x=Symbol(‘x’)
expand((x+x**2+x**3+x**4+x**5+x**6)**3)

21さんが考えた問題は5個のダイスのうち一つだけ2,2,3,4,5,6が出る場合なので、

expand((x**2+x**2+x**3+x**4+x**5+x**6)*(x+x**2+x**3+x**4+x**5+x**6)**4)

です。答は下に。

\[ x^{30} + 5 x^{29} + 15 x^{28} + 35 x^{27} + 71 x^{26} + 129 x^{25} + \] \[211 x^{24} + 315 x^{23} + 435 x^{22} + 561 x^{21} + 675 x^{20} + 759 x^{19} +\] \[801 x^{18} + 795 x^{17} + 741 x^{16} + 645 x^{15} + 525 x^{14} + 399 x^{13} + \] \[281 x^{12} + 181 x^{11} + 105 x^{10} + 55 x^{9} + 25 x^{8} + 9 x^{7} + 2 x^{6} \] 21さんの解答https://twitter.com/rubbishdog21/status/1369241440224739331と同じです。

2020年7月19日日曜日

2D6の差が2D6の和と同じこと

歴史群像の付録ゲームは戦闘結果表の解決を2個の6面体ダイスの差で与える。攻撃側と防御側が1個ずつ振るので、防御側も戦闘に参加している感が出るのかもしれない。

ところで、2個の6面体ダイスの差は平均0の出る確率が6/36, 最大値6-1の出る確率は1/36などと、和と同じである。表を書き出して確率を求めれば確かにその通りなのだが、もっと直観的に理解したい。

2個の6面体ダイスをA, Bとする。A+B, A-Bの取りうる値を揃えるため、差に7を加えてA+B, A-B+7を比較する。A+BもA-B+7は2から12までの値を取りうるので、A+B=kとなる確率がA-B+7=kとなる確率に等しくなることを示せば良い。ここで、kは2から12までの値である。

A-B+7=A+(7-B)と考える。7-Bの取りうる値は6,5,4,3,2,1で、それぞれ1/6の確率である。つまり、7-Bは普通の6面体ダイスを振った結果に等しい。これをB'とする。すると、示すべきことはA+B=kとなる確率はA+B'=kとなる確率に等しいということで、自明である。

ということで、ウォーゲームは確率の問題の母なのである。

2019年12月15日日曜日

盤端効果と確率

War-Gamers Advent Calendar 2019 の記事のつもりです。予約投稿したつもりが公開されてなく、しかもURLも出してませんでした。反省。

さて、

しばらく前、MustAttack方面にて盤端効果の話題が伸びました。2-in-1のゲームを連結したら初期配置が大きく変わる、それは「シミュレーション」としてどうなのか、という問いが発端でした。この問いに確率をつかってアプローチしてみます。あ、もとの問いには答えは出てますね。

さて、考える状況は次の通りです。並んだ2戦線があります。独立ゲームとしても連結ゲームとしても遊べるようにデザインされました。防御側と攻撃側は明確に別れています。2戦線とも史実では攻撃側が10ヘックス前進しました。これを参考に、独立ゲームの勝利条件として攻撃側は10ヘックスより深く前進すれば勝利とします。10ヘックスなら引き分け、10ヘックス未満なら敗北です。

10ターンで終了、サドンデスなしとします。1ターンで攻撃側が2ヘックス前進する確率は1/2です。これは史実を反映した戦闘結果表に基づく確率です。平均して1ターンに1ヘックス前進し、史実もそのように進展しました。ですから、独立ゲームの盤端における戦線は1ターンに1ヘックス前進します。これは補給線に影響します。

という設定を考えます。ゲームデザインとしていかがなものかというご批判は甘受します。

さて、独立ゲームでは勝率半々でうまく機能している初期配置とコマさばきがあるものとします。連結ゲームにしたときにどうなるでしょう。

まあ初期配置とコマさばきは変わるでしょう。なぜなら、実際のさいころの目は平均から外れるからです。だいたい標準偏差くらいの外れが出ますので、10ターンでは二項分布の標準偏差として10x(1/2)x(1/2)の平方根、(√10)/2くらい、およそ1.7ヘックスくらいの差が両戦線に積み上がります。プラスマイナス3ヘックス以上です。

というわけで、普通に平均値が史実とみなして盤端効果を設計すると連結したら結果は変わります。シミュレーションとしては盤端にも確率効果を入れるのでしょうか。

2018年12月2日日曜日

平均一定の二項分布たち

War-Games Advent Calendar 2018 https://adventar.org/calendars/3461 の記事です。すみません今年もゲームなしです。

平均一定の二項分布たち、試行回数を増やすと少数の法則が成立して、ポアソン分布になります。滅多に起きない事象についての法則で、製品の不良率の評価などに使われるそうです。

というのは、二項分布
\[ Prob(X=k)={}_nC_k p^k(1-p)^{n-k}\]
の平均が\(np\)だから、平均\(N=np\)を一定に保って試行回数\(n\)を大きくすると確率\(p\)は\(p=N/n\)に決まって、この確率自体は小さくなります。じゃあ\(k\)回当たる確率
\[
Prob_n(X=k)=\frac{n!}{(n-k)!k!} (N/n)^k (1-N/n)^{n-k}
\]
は\(n\)が増えるとどうなっていくのか、ということ。

これはつまり\(N=2\)で\(n=3,4,6,12\)の場合をはねはねさんがMAの日記で提案したものです。
 2018年11月20日12:41
1対1の差しでの勝負、打撃の多いほうが勝ちというルールで先手だとして。みなさん、どれを選択しますか?
1.サイコロ振らずに2打撃
2.サイコロ3個振って、1-4で1打撃
3.サイコロ4個振って、1-3で1打撃
4.サイコロ6個振って、1-2で1打撃
5.サイコロ12個振って、1で1打撃

分散が\(np(1-p)=2(1-2/n)\)なので、 \(n\)が増えると増加しますから、どんどんブラッディになります、という指摘はコメントに見られます。

結論は、
\[
\lim_{n\to\infty} Prob_n(X=k)=e^{-2}\frac{2^k}{k!}
\]
となってこれはポアソン分布に他ならないのですが、これだけだとあれなので

2018年11月20日17:24 さかみちさんのコメント 
計算が違っていなければ、選択肢5に向かって期待値である2以上の確率は下がり、逆に3以上の確率は上がるので。
を\(N=2\)で確かめます。

負ける確率は、打撃0か1です。\(n\)が増えるにつれて1以下の確率が上がればよく、

まず
\[
Prob_n(X=0)+Prob_n(X=1)=p^n+np(1-p)^{n-1}=(1-2/n)^n+2(1-2/n)^{n-1}
\]
です。

自然対数の底を定義するときに現れる数列\((1+1/n)\)は単調増加なので、同じようにして\((1-2/n)^n\)も単調増加。

というわけで \(n\)が増えると2以上の確率は下がります。収束先は\(3e^{-2}=3/e^2\)です。

2になる確率を計算すると,
\[
 Prob_n(X=2)=\frac{n(n-1)}{2}(2/n)^2(1-2/n)^{n-2}=2(1-1/n)(1-2/n)^{n-2}=2\frac{1-1/n}{(1-2/n)^2}(1-2/n)^n
\]
これは\(n\)が増えると減少し、\(2/e^2\)に収束します。結局、打撃が3以上になる確率は\(n\)が増えると増えます。増えますけど、打撃が0か1になる確率もそれなりにあるので、選択は難しい。大きな打撃を与える確率は非常に小さくなりますから、少数の法則そのものです。

2017年12月13日水曜日

1D6と5D2

War-Gamers Advent Calendar 2017       の記事です。ゲームが出てこなくてすみません。しかも予約投稿に失敗していました。ごめんなさい。

 さいころ一振りで勝敗を分ける、という状況は対戦記録を読んでもよく出てきます。戦力を集中して攻撃したら思いの外さいころの目が悪く相互損害になって停滞などという例はありふれています。なんでそうなる、という問題はゲームシステムとしても検討の対象となっていて、ファイアパワーやマグニチュードという概念が使われてきました。でも、確率に手を入れる、ということはやられていないように思います。
 確率に手を入れるとなると、例えば平均に近い目を出やすくするということになります。ただ、それはさいころのランダム性を少し崩しますし、実現が難しいことからも採用はされてこなかったのでしょう。 でも、そこを少し追求します。
 さいころを振って1から6の目が出る確率はほぼ1/6としておきます。そもそも戦闘結果表による解決結果として、どの結果も等しい確率で出るという設定を簡単に変えることを目指します。

 さいころを1回振ると1から6の目が出るということを次のように言い換えます。

「硬貨を5枚用意して表の出る数は0から5まで。表の数に1を足せば1から6まで出てきます。」

この場合にそれぞれの数が出る確率を求めます。

硬貨を5枚振って表が出ない組み合わせは1通り。
1枚出る組み合わせは5通り。
2枚出る組み合わせは5!/(2!3!)=10通り。
3枚出る組み合わせは2枚出る組み合わせと同じ10通り。
4枚出る組み合わせは1枚出る組み合わせと同じ5通り。
5枚出る組み合わせは出ない場合と同じ1通り。

1から6の目に直した確率は、2の5乗が32ですから
1: 1/32
2: 5/32
3: 10/32
4: 10/32
5: 5/32
6: 1/32
となります。明らかに平均前後の3と4の確率が高くなっています。というか1の出る確率は3の出る確率の1/10です。2の出る確率も3の半分。長いゲームの歴史の中で、どなたかやってみた方はいないものでしょうか。いや、やってから記事書けということではありますが諸般の事情はとてもゲームどころでなく。

 2個のさいころであれば硬貨を11枚用意すれば同じことができます。ただ、ゾロ目という概念はなくなります。10面のさいころなら9枚です。あまり枚数が増えると平均の近くばかり出るようになりますので、それはそれで意外性がなくなるのかもしれません。
 以上は大数の法則からすぐにわかることを書き連ねました。どこかで「味のある乱数」とか「コクのある乱数」いう言い方をしていた記事を覚えていたものに触発されたものです。

2016年5月14日土曜日

Markov的さいころ(改)

MA方面に次のような問題がありました。
(PC版でないと式が出ないようです。)

7面のさいころが6個あって、それぞれ1が2面、2が2面、3が2面、、、6が2面に書かれている。各面の出る確率は等しい。1回振って1が出たら次は1が2面のものを振る。2が出たら2が2面のものを振る。以下同様とする。このとき、1から6までの目が出る確率は等しいかどうか。

答え:等しい。

理由:

1が出た後に1が出る確率は2/7、他は1/7。他の目も同様。同じ目が続く確率は2/7で他は等確率。つまり、xの目が出た後にy の目が出る確率 \(p_{xy}\) について、\(p_{xx}=2/7\) , \(p_{xy}=1/7, (x\ne y)\)となる。

ある時点でxの出る確率\(p_x\)を決めておくと、次に1が出る確率\(q_1\)は
\[q_1=p_1 \cdot 2/7+p_2\cdot 1/7 +\dots + p_6\cdot 1/7 \]
であり、他の目についても同様。

したがって、推移確率行列は次の通り。
 \[
\begin{pmatrix} 2/7 & 1/7 & 1/7 & 1/7 & 1/7 & 1/7\\
1/7 & 2/7 & 1/7 & 1/7 & 1/7 & 1/7\\
1/7 & 1/7 & 2/7 & 1/7 & 1/7 & 1/7\\
1/7 & 1/7 & 1/7 & 2/7 & 1/7 & 1/7\\
1/7 & 1/7 & 1/7 & 1/7 & 2/7 & 1/7\\
1/7 & 1/7 & 1/7 & 1/7 & 1/7 & 2/7
\end{pmatrix}
\]
定常状態の確率\((p_1, p_2, p_3, p_4, p_5,p_6)\)、言い換えると\(q_x=p_x\)となる確率は次を満たす。

\[(p_1, p_2, p_3, p_4, p_5,p_6)=(p_1, p_2, p_3, p_4, p_5,p_6)
\begin{pmatrix} 2/7 & 1/7 & 1/7 & 1/7 & 1/7 & 1/7\\
1/7 & 2/7 & 1/7 & 1/7 & 1/7 & 1/7\\
1/7 & 1/7 & 2/7 & 1/7 & 1/7 & 1/7\\
1/7 & 1/7 & 1/7 & 2/7 & 1/7 & 1/7\\
1/7 & 1/7 & 1/7 & 1/7 & 2/7 & 1/7\\
1/7 & 1/7 & 1/7 & 1/7 & 1/7 & 2/7
\end{pmatrix}
\]

これは\(p_x\)が全て等しいときに成立するから、定常状態は
\((1/6,1/6,1/6,1/6,1/6,1/6)\)となる。(以上)


初めに一回振るときは6つのさいころを等確率に選ぶとして、1の出る確率は
1/6 x 2/7 + 1/6 x 1/7 x 5 = 1/6 となるので、初期条件も定常状態。だから、何回振っても特定の目の出る確率は 「平均して」 1/6 になる。

ただし、1が2回続く確率はもちろん 1/6 x 2/7=1/21 で、1/36ではない。

さらに、一度1が出たところから始めれば
\((1,0,0,0,0,0)\)を初期状態とするわけだから、2回目にそれぞれの目が出る確率は
\((2/7,1/7,1/7,1/7,1/7,1/7)\)となる。3回目はこれに右から上の行列を掛けて
\((9/49,8/49,8/49,8/49,8/49)\)。
いずれにしても、最初に出た目である1が出る確率は常に(少しだけ)大きく、無限に続ければ1/6に近づくということ。

いかさまに使えそうな確率のトリックかもしれない。

2015年11月15日日曜日

死守できるターン数の期待値

\(p\)をステップロスする確率として、ステップロスするターン数の期待値は

\[
 \sum_{n=1}^\infty n(1-p)^n=p\sum_{n=1}^\infty n(1-p)^{n-1}=p(\sum_{n=1}^\infty (1-p)^{n})'=-p(\frac{1-p}{1-(1-p)})'
\]
\[
=-p(\frac{1-p}{p})'=-p(\frac{1}{p}-1)'=1/p
\]
 ステップロスする確率の逆数というわかりやすい結果。