複数のサイコロの結果分布を簡単に決定するにはどうすればよいですか?
On 2月 13, 2021 by adminサイコロの組み合わせの合計の確率分布を計算したい。
の確率は、組み合わせの総数に対するその数の合計の組み合わせの数であることを覚えています(サイコロの分布が均一であると仮定)。
式は何ですか
- 合計の組み合わせの数
- 特定の数の合計の組み合わせの数
コメント
- $(X_1 = 1、X_2 = 2)$と$(X_1 = 2、X_2 = 1)$は異なるものとして扱う必要があると思いますイベント。
回答
正確な解決策
$ n $ スローの組み合わせの数はもちろん
これらの計算は、1つのダイの確率生成関数を使用して最も簡単に実行できます。
$$ p(x)= x + x ^ 2 + x ^ 3 + x ^ 4 + x ^ 5 + x ^ 6 = x \ frac {1-x ^ 6} {1-x}。$$
(実際には、これはpgfの $ 6 $ 倍です-
$ n $ ロールのpgfは $ p(x)^ n $ 。これは、閉じた形式ではありませんが、便利な形式であり、二項定理を使用してかなり直接計算できます。
$$ p(x )^ n = x ^ n(1-x ^ 6)^ n(1-x)^ {-n} $$
$ $ = x ^ n \ left(\ sum_ {k = 0} ^ {n} {n \ choice k}(-1)^ kx ^ {6k} \ right)\ left(\ sum_ {j = 0} ^ { \ infty} {-n \ choice j}(-1)^ jx ^ j \ right)。$$
$ m $ は、この製品の $ x ^ m $ の係数であり、次のように分離できます
$$ \ sum_ {6k + j = m-n} {n \ choice k} {-n \ choice j}(-1)^ {k + j} 。$$
合計はすべての非負の
$$-{3 \ 0を選択} {-3 \ 11を選択} + {3 \ 1を選択} {-3 \ 5を選択} $$
$$ = 1 \ frac {(-3)(-4)\ cdots(-13)} {11!} + 3 \ frac {(-3)(-4)\ cdots(-7)} {5!} $$
$$ = \ frac {1} {2} 12 \ cdot 13- \ frac {3} {2} 6 \ cdot 7 = 15 。$$
(賢くても、 $ m = 7 $ の場合も答えは同じになることに注意してください。対称性1 <-> 6、2 <-> 5、および3 <-> 4そして
$$ {3 \ choice 0} {-3 \ choice 4} = 15 \ text {。} $$
したがって、確率は次のようになります。 $ 15/6 ^ 3 $ = $ 5/36 $ 、約14%。
これが苦痛になるまでに、中央限界定理は適切な近似を提供します(少なくとも、 $ m $ が
この公式はSrikantが参照しているWikipediaの記事に記載されているようですが、正当化も例も示されていません。このアプローチが抽象的すぎると思われる場合は、お気に入りの数式処理システムを起動して、 $ n ^ {\ text {th}} $ の $ x + x ^ 2 + \ cdots + x ^ 6 $ :値のセット全体をすぐに読み取ることができます。 例、Mathematicaのワンライナーは
With[{n=3}, CoefficientList[Expand[(x + x^2 + x^3 + x^4 + x^5 + x^6)^n], x]]
コメント
- その数学コードはwolframalphaで動作しますか?
- 動作します。以前のバージョンを試しましたが、出力を理解できませんでした。
- @Srikant:Expand [Sum [x ^ i、{i、1,6}] ^ 3]はWolframAlphaでも機能します
- @ A.Wilsonこれらの参照の多くは一般化への明確なパスを提供します。この例では、$(x + x ^ 2 + \ cdots + x ^ 6)(x + x ^ 2 + x ^ 3 + x ^ 4)^ 3 $です。
R
コードでこれらを計算する場合は、 stats.stackexchange.com/a/116913 を参照してください。完全に実装されたシステム。別の例として、 Mathematica コードはClear[x, d]; d[n_, x_] := Sum[x^i, {i, 1, n}]; d[6, x] d[4, x]^3 // Expand
- @whuber ‘であることに注意してください。 ■説明は1d6 + 3d4用であり、それでそこに到達するはずです。任意のwdn + vdmの場合、(x + x ^ 2 + … + x ^ w)^ n(x + x ^ 2 + … + x ^ v)^ m。追加の項は、同じ方法で作成され、積と乗算される多項式です。
回答
さらに別の方法ダイスロールの確率分布をすばやく計算するには、その目的のためだけに設計された専用の計算機を使用します。
Torben Mogensen 、CS DIKU の教授は、トロールと呼ばれる優れたサイコロローラーを持っています。
トロールダイスローラーと確率計算機は、さまざまな複雑なダイスロールメカニズムの確率分布(pmf、ヒストグラム、およびオプションでcdfまたはccdf)、平均、広がり、および平均偏差を出力します。 Trollのダイスロール言語を示すいくつかの例を次に示します。
3つの6面ダイスをロールして合計します:sum 3d6
。
4つの6面ダイスを振って、最高の3を維持し、それらを合計します:sum largest 3 4d6
。
「爆発する」6面ダイス(つまり、 「6」が出たら、合計に6を加えて、もう一度振ります):sum (accumulate y:=d6 while y=6)
。
トロールの SML ソースコードは、その実装方法を確認したい場合に利用できます。
Morgensen教授には29ページの論文「 RPGのサイコロを振るメカニズム」では、トロールによって実装されたサイコロを振るメカニズムの多くと、その背後にあるいくつかの数学について説明しています。
同様の無料のオープンソースソフトウェアは Dicelab で、LinuxとWindowsの両方で動作します。
回答
組み合わせや確率を計算する非常に優れた方法があります畳み込みを直接計算するスプレッドシート(Excelなど)内の都市。
確率の観点からそれを行い、6面のサイコロについて説明しますが、任意の数の面を持つサイコロに対して行うことができます(異なる面を追加することを含む)。
(ところで、畳み込みを行うRやmatlabのようなものでも簡単です)
きれいなシートから始めて、数列で、上から行の束を下に移動します(6以上) 。
-
値1をセルに入力します。これは、0個のサイコロに関連する確率です。左側に0を付けます。これは、値の列です。そこから、必要な限り1,2,3を下に続けます。
-
「1」から1列右下に移動します。数式「= sum(」を入力してから、左矢印上矢印(1が含まれるセルを強調表示する)、「:」(範囲の入力を開始する)を押し、次に上矢印を5回押してから、「)/ 6 “を押してEnterキーを押すと、
=sum(c4:c9)/6
のような数式になります(ここで、C9
は1が含まれるセルです) 。次に、数式をコピーして、その下の5つのセルに貼り付けます。それぞれに0.16667(ish)が含まれている必要があります。
これらの数式の空のセルには何も入力しないでください参照してください!
-
値の列の上部から1を下に、右に1移動して、貼り付けます…
…合計11個の値。これらは、2つのサイコロの確率になります。
貼り付けが多すぎても問題ありません。ただゼロになります。
-
次の列で3つのサイコロ、さらに4つ、5つのサイコロなどについて、手順3を繰り返します。
ここで、4d6で$ 12 $を振る確率は0.096451であることがわかります($ 4 ^ 6 $を掛けると、正確な分数として書くことができます)。
Excelに精通している場合-セルから数式をコピーして多くのセルに貼り付けるなど1つの列で、約1分程度で最大10d6までのすべてのテーブルを生成できます(数回実行した場合はおそらく高速になります)。
代わりに組み合わせカウントが必要な場合確率は、6で割らないでください。
面の数が異なるサイコロが必要な場合は、(6ではなく)セルを合計してから$ k $で割ることができます。列間でサイコロを混ぜることができます(例:d6の列とd8の列を実行して、d6 + d8の確率関数を取得します):
コメント
- これは、理解しなくても、それを行う方法が欲しいだけの私のような人にとって非常に便利です。 ‘
OFFSET()
関数の変動性を気にしない場合は、名前付き範囲を使用してこれを動的にすることができます。たとえば、辺の数を保持するためにDiceSize
という範囲を作成し、最初の” 1 ” B23の確率。=OFFSET('Dice Rolls'!$A$22,-1*DiceSize,,DiceSize,1)
を参照するKingSumという動的な名前付き範囲を使用しました。次に、セルC23で数式=SUM(OFFSET(KingSum,ROW(A1),COLUMN(A1)))/DiceSize
を使用し、広い領域全体にドラッグして、DiceSizeに依存するテーブルを作成しました。
回答
$ \ newcommand {red} {\ color {red}} $ $ \ newcommand {blue} {\ color {blue}} $
最初のダイを赤、2番目のダイを黒にします。次に、36の可能な結果があります:
\ begin {array} {c | c | c | c | c | c | c} & 1 & 2 & 3 & 4 & 5 & 6 \\\ hline \ red {1} & \ red {1}、1 & \ red {1}、2 & \ red {1}、3 & \ red {1}、4 & \ red {1}、5 & \ red {1}、6 \\ & \ blue {^ 2} & \ blue {^ 3} & \ blue {^ 4} & \ blue {^ 5} & \ blue {^ 6} & \ blue {^ 7} \\\ hline \赤{2} & \ red {2}、1 & \ red {2}、2 & \ red {2}、3 & \ red {2}、4 & \ red {2}、5 & \ red {2}、6 \\ & \ blue {^ 3} & \ blue {^ 4}
\ blue {^ 5} & \ blue {^ 6} & \ blue { ^ 7} & \ blue {^ 8} \\\ hline \ red {3} & \ red {3}、1 & \ red {3}、2 & \ red {3}、3 & \赤{3}、4 & \ red {3}、5 & \ red {3}、6 \\ & \ blue {^ 4} & \ blue {^ 5} & \ blue {^ 6} & \ blue {^ 7} & \ blue {^ 8} & \ blue {^ 9} \\\ hline \ red {4} & \ red {4}、1 & \ red {4}、 2 & \ red {4}、3 & \ red {4}、4 & \ red {4}、5 & \ red {4}、6 \\ & \ blue {^ 5} & \ blue {^ 6} & \ blue {^ 7} & \ blue {^ 8 } & \青{^ 9} & \ blue {^ {10}} \\\ hline \ red {5} & \ red {5 }、1 & \ red {5}、2 & \ red {5}、3 & \ red {5}、4 & \ red {5}、5 & \ red {5}、6 \\ & \ blue {^ 6} & \ blue {^ 7} & \ blue {^ 8} & \ blue {^ 9} & \ blue {^ {10}} & \ blue {^ {11}} \\\ hline \ red {6} & \ red {6}、1 & \ red {6}、2 & \ red {6}、3 & \ red {6}、4 & \ red {6}、5 & \ red {6}、6 \\ & \青{^ 7} & \ blue {^ 8} & \ blue {^ 9} & \ blue {^ {10}} & \ blue {^ {11}} & \ blue {^ {12} } \\\ hline \ end {array}
各これらの36($ \ red {\ text {red}}、\ text {black} $)の結果は同じように発生する可能性があります。
顔の数字を合計すると(合計$ \ blue {\ text {青}} $)、いくつかの(赤、黒)の結果は同じ合計になります-これは質問の表で確認できます。
たとえば、1つだけです。合計$ 2 $を取得する方法(つまりイベント($ \ red {1}、1 $))のみですが、$ 3 $を取得する方法は 2つあります(つまり、基本イベント($ \ red {2}、1 $)と($ \ red {1}、2 $))したがって、合計$ 3 $は$ 2 $の2倍になる可能性があります。同様に、$ 4 $を取得する3つの方法、$ 5 $を取得する4つの方法などがあります。 。
36の可能な(赤、黒)結果があるので、すべての異なる合計を取得する方法の総数も36です。したがって、最後に36で割る必要があります。合計確率は1になります。
コメント
- うわー、テーブルは美しいです!
- 非常にきれいです
回答
おおよその解決策
正確な解決策については前に説明しました(以下を参照)。私は今あなたのニーズによりよく合うかもしれないおおよその解決策を提供します。
みましょう:
$ X_i $は、$ i = 1、… n $である$ s $のサイコロを振った結果です。
$ S $はすべての$ n $サイコロの合計です。
$ \ bar {X} $はサンプル平均です。
定義上、次のようになります。
$ \ bar {X} = \ frac {\ sum_iX_i} {n} $
つまり、
$ \ bar {X} = \ frac {S} {n} $
ここでのアイデアは、$ n $のサイコロを投げた結果としてではなく、同じサイコロを$ n $回投げた結果として$ {X_i} $を観察するプロセスを視覚化することです。したがって、中心極限定理を呼び出すことができます(離散分布から連続分布への移行に関連する技術を無視します)。$ n \ rightarrow \ infty $:
$ \ bar {X} \ sim N( \ mu、\ sigma ^ 2 / n)$
ここで、
$ \ mu =(s + 1)/ 2 $は、単一のダイスのロールの平均であり、
$ \ sigma ^ 2 =(s ^ 2-1)/ 12 $は関連する分散です。
基礎となる分布$ X_i $は離散的であるため、上記は明らかに近似値です。サポート。
しかし、
$ S = n \ bar {X} $。
したがって、次のようになります。
$ S \ sim N(n \ mu、n \ sigma ^ 2)$。
正確なソリューション
ウィキペディアには、必要な確率を計算する方法について簡単な説明があります。そこでの説明が理にかなっている理由についてもう少し詳しく説明します。可能な限り、ウィキペディアの記事と同様の表記法を使用しました。
$ s $の面を持つ$ n $のサイコロがあり、すべての$ nの1つのロールが発生する確率を計算するとします。 $サイコロの合計は$ k $になります。アプローチは次のとおりです。
定義:
$ F_ {s、n}(k)$:$の1回のロールで合計$ k $を得る確率n $は$ s $の面を持つサイコロです。
定義上、次のようになります。
$ F_ {s、1}(k)= \ frac {1} {s} $
上記のように、$ s $のサイコロが1つしかない場合、1からsまでの合計$ k $が得られる確率は、おなじみの$ \ frac {1} {s} $です。
2つのサイコロを振るときの状況を考えてみましょう:次のように$ k $の合計を得ることができます:最初のサイコロは1から$ k-1 $の間で、2番目のサイコロの対応するロールは$ kの間です-1 $から$ 1 $。したがって、次のようになります。
$ F_ {s、2}(k)= \ sum_ {i = 1} ^ {i = k-1} {F_ {s、1}(i)F_ { s、1}(ki)} $
ここで、3つのサイコロを振ったとします。最初のサイコロで1から$ k-2 $を振ると、合計$ k $を得ることができます。残りの2つのサイコロの合計は$ k-1 $から$ 2 $の間です。したがって、
$ F_ {s、3}(k)= \ sum_ {i = 1} ^ {i = k-2} {F_ {s、1}(i)F_ {s、2 }(ki)} $
上記の論理を続けると、再帰方程式が得られます。
$ F_ {s、n}(k)= \ sum_ {i = 1} ^ {i = k-n + 1} {F_ {s、1}(i)F_ {s、n-1}(ki)} $
詳細については、Wikipediaのリンクを参照してください。
コメント
- @Srikantすばらしい答えですが、その関数は何か算数(つまり、再帰的ではない)に解決されますか?
- @C。ロス残念ながら私はそうは思いません。しかし、適度に小さいnと小さいsを処理している限り、再帰はそれほど難しくないはずだと思います。ルックアップテーブルを作成し、必要に応じて繰り返し使用することができます。
- リンクしたウィキペディアのページには、単一の合計である単純な非再帰式があります。 1つの派生はwhuber ‘の回答にあります。
- wikiリンクアンカーが機能していません。代替品を知っていますか?
回答
これは、実際には驚くほど複雑な質問です。幸いなことに、ここで非常によく説明されている正確な解決策があります:
http://mathworld.wolfram.com/Dice.html
あなたが探している確率は式(10)で与えられます:「ns面のサイコロでpポイント(pのロール)を得る確率」。
あなたの場合:p =観測されたスコア(すべてのサイコロの合計)、n =サイコロの数、s = 6(6面のサイコロ)。これにより、次の確率質量関数が得られます。
$$ P(X_n = p)= \ frac {1} {s ^ n} \ sum_ {k = 0} ^ {\ lfloor(pn)/ 6 \ rfloor}(-1)^ k {n \ choice k} {p-6k-1 \ choice n-1} $$
コメント
- 私たちのサイトへようこそ、Felix!
回答
特性関数を使用すると、確率変数の合計と差を含む計算が非常に簡単になります。 Mathematica には、分布をその特性関数に変換する組み込み関数など、統計分布を処理するための多くの関数があります。
これを2つの具体的な例で説明します。(1)面の数が異なるのサイコロのコレクションを転がした結果を決定したいとします。たとえば、6面のサイコロを2つと8面のサイコロを1つ転がします。死ぬ(すなわち、 2d6 + d8 )?または(2)2つのサイコロの目(例: d6-d6 )の違いを見つけたいとしたら?
これを行う簡単な方法は、特性関数を使用することです。基礎となる離散一様分布の。確率変数$ X $に確率質量関数 $ f $がある場合、その特性関数$ \ varphi_X(t)$は離散 $ f $のフーリエ変換、つまり$ \ varphi_X(t)= \ mathcal {F} \ {f \}(t)= E [e ^ {it X }] $。定理は次のように示しています。
独立したランダム変数$ X $と$ Y $に対応する確率質量関数$ f $と$ g $がある場合、合計$のpmf $ h $これらのRVのX + Y $は、pmfsの畳み込みです$ h(n)=(f \ ast g)(n)= \ sum_ {m = -\ infty} ^ \ infty f(m)g(nm)$。
フーリエ変換の畳み込みプロパティを使用して、特性関数の観点からこれをより簡単に言い換えることができます。
独立ランダム変数$ X $と$ Y $の合計の特性関数$ \ varphi_ {X + Y}(t)$は、それらの特性関数$ \ varphi_ {X}の積に等しくなります。 (t)\ varphi_ {Y}(t)$。
このMathematica関数は、s面ダイの特性関数を作成します:
MakeCf[s_] := Module[{Cf}, Cf := CharacteristicFunction[DiscreteUniformDistribution[{1, s}], t]; Cf]
フーリエ変換は可逆であるため、分布のpmfはその特性関数から復元できます。これを行うためのMathematicaコードは次のとおりです。
RecoverPmf[Cf_] := Module[{F}, F[y_] := SeriesCoefficient[Cf /. t -> -I*Log[x], {x, 0, y}]; F]
例を続けて、Fを2d6 + d8の結果のpmfとします。
F := RecoverPmf[MakeCf[6]^2 MakeCf[8]]
$ 6 ^ 2 \ cdot 8 = 288 $の結果があります。 Fのサポートドメインは$ S = \ {3、\ ldots、20 \} $です。 「3つのサイコロを振っているので3は最小です。そして、$ 20 = 2 \ cdot 6 + 8 $なので、20が最大です。Fの画像を見たい場合は、計算してください
In:= F /@ Range[3, 20] Out= {1/288, 1/96, 1/48, 5/144, 5/96, 7/96, 13/144, 5/48, 1/9, 1/9, \ 5/48, 13/144, 7/96, 5/96, 5/144, 1/48, 1/96, 1/288}
合計が10になる結果の数を知りたい場合は、計算します
In:= 6^2 8 F[10] Out= 30
独立したランダム変数の場合$ X $と$ Y $には対応する確率質量関数$ f $と$ g $があり、これらのRVの差$ X-Y $のpmf $ h $はそれらのpmfsの相互相関 $ h(n)=(f \ star g)(n)= \ sum_ {m =-\ infty} ^ \ infty f(m)g(n + m)$ 。
フーリエ変換の相互相関プロパティを使用して、特性関数の観点からこれをより簡単に言い換えることができます。
特性関数$ \ varphi_ 2つの独立したランダム変数$ {X、Y} $の差の{XY}(t)$は、特性関数$ \ varphi_ {X}(t)$と$ \ varphi_ {Y}(-t)の積に等しくなります。 $(NB2番目のchaの変数tの前の負の符号実用的な関数)。
つまり、Mathematicaを使ってd6-d6のpmf Gを見つける:
G := RecoverPmf[MakeCf[6] (MakeCf[6] /. t -> -t)]
$ 6 ^ 2 = 36 $の結果があります。 Gのサポートドメインは$ S = \ {-5、\ ldots、5 \} $です。 $ -5 = 1-6 $であるため、-5は最小値です。そして、$ 6-1 = 5 $なので、5が最大です。 Gの画像を見たい場合は、計算
In:= G /@ Range[-5, 5] Out= {1/36, 1/18, 1/12, 1/9, 5/36, 1/6, 5/36, 1/9, 1/12, 1/18, 1/36}
コメント
- もちろん、有限サポートの分布(ここで問題になっているものなど)を含む離散分布の場合、cfはx = exp(it)で評価される確率生成関数であり、同じ情報をエンコードするより複雑な方法になります。
- @whuber:あなたが言うように、cf、mgf、およびpgfは多かれ少なかれ同じであり、互いに簡単に変換できますが、Mathematicaには、知っているすべての確率分布で機能するcfが組み込まれています。 ‘にpgfが組み込まれていません。これにより、上記で示したようにサイコロの式の複雑さに関係なく、cfsを使用してサイコロの合計(および差)を処理するためのMathematicaコードを特にエレガントに構築できます。さらに、cfs、FT、畳み込み、相互相関がこのような問題の解決にどのように役立つかを知っていても、’害はありません。
- @Elisha:良い点、それらすべて。私が最も不思議に思うのは、10行ほどの数学コードが本当に”エレガント”であるか、効率的であるかということです。私が以前に提案した単一のライン(またはSrikantがWolfram Alphaに供給したさらに短いライン)。特性関数を使用した内部操作は、多項式の乗法に必要な単純な畳み込みよりも難しいと思います。確かに、Glen_b ‘の回答が示すように、後者は他のほとんどのソフトウェア環境で実装する方が簡単です。このアプローチの利点は、一般性が高いことです。
回答
確率を計算する別の方法は次のとおりです。畳み込みを使用した手作業による2つのサイコロの合計の分布。
例を非常に単純にするために、確率変数をXと呼ぶ3面ダイ(d3)と両面ダイ(d2)の合計の確率分布を計算します。 )その確率変数を「Y」と呼びます。
テーブルを作成します。上の行に、Xの確率分布(公正なd3を振った結果)を記入します。左の列の下に、Yの確率分布を記述します(公正なd2を振った結果)。
あなたは外部製品を作成します。確率の一番上の行と確率の左の列。たとえば、右下のセルは、添付の図に示すように、Pr [X = 3] = 1/3とPr [Y = 2] = 1/2の積になります。単純な例では、すべてのセルが1/6に等しくなります。
次に、添付の図に示すように、外積行列の斜線に沿って合計します。各斜線は通過します。同じ色の1つ以上のセル:上の行は1つの青いセルを通過し、次の行は2つの赤いセルを通過します。
斜線に沿った各合計は、結果の分布の確率を表します。たとえば、赤血球の合計は、2つのサイコロの合計が3になる確率に等しくなります。これらの確率は、添付の図の右側に示されています。
この手法は、任意の2つの離散分布で使用できます。有限のサポート付き。そして、それを繰り返し適用することができます。たとえば、3つの6面サイコロ(3d6)の分布を知りたい場合は、最初に2d6 = d6 + d6を計算できます。次に、3d6 = d6 + 2d6。
J と呼ばれる無料の(ただしクローズドライセンスの)プログラミング言語があります。 APLにルーツを持つ配列ベースの言語。行列の斜積に沿って外積と合計を実行する演算子が組み込まれているため、説明した手法の実装は非常に簡単です。
次のJコードでは、2つの動詞を定義します。最初に、動詞d
は、s側のサイコロのpmfを表す配列を作成します。たとえば、d 6
は6面ダイのpmfです。次に、動詞conv
は、2つの配列の外積を見つけ、斜線に沿って合計します。したがって、conv~ d 6
は2d6のpmfを出力します。
d=:$% conv=:+//.@(*/) |:(2+i.11),:conv~d 6 2 0.0277778 3 0.0555556 4 0.0833333 5 0.111111 6 0.138889 7 0.166667 8 0.138889 9 0.111111 10 0.0833333 11 0.0555556 12 0.0277778
ご覧のとおり、Jは不可解ですが、簡潔です。 。
回答
ユーザー名が大好きです!よくできました:)
数える必要のある結果はサイコロの目です。表に示されているように、すべて$ 6 \ times 6 = 36 $です。
たとえば、$ \ frac合計が$ 2 $の場合の{1} {36} $、合計が$ 3 $の場合の$ \ frac {2} {36} $、および時間の$ \ frac {4} {36} $合計は$ 4 $などです。
コメント
- I ‘は本当に混乱していますこの。明らかに存在しなくなったdie_hardという人からのごく最近の初心者の質問に答えたところ、この古代のスレッドに私の答えが添付されていることがわかりました!
- stats.stackexchange.com/questions/173434/ … は、この重複に対する回答と統合されました。
回答
これは再帰式で解くことができます。その場合、$ n $ダイスのロールの確率は、$ n-1 $ダイスのロールによって計算されます。
$$ a_n(l)= \ sum_ {l-6 \ leq k \ leq l-1 \\ \ text {および} n-1 \ leq k \ leq 6(n-1)} a_ {n-1}(k)$$
kの最初の制限合計は、先行する6つの数値です。たとえば、3つのサイコロで13を振る場合、最初の2つのサイコロが7から12の間で振る場合、これを行うことができます。
合計のkの2番目の制限は、使用できるサイコロの制限です。 n-1個のサイコロ
結果:
1 1 1 1 1 1 1 2 3 4 5 6 5 4 3 2 1 1 3 6 10 15 21 25 27 27 25 21 15 10 6 3 1 1 4 10 20 35 56 80 104 125 140 146 140 125 104 80 56 35 20 10 4 1 1 5 15 35 70 126 205 305 420 540 651 735 780 780 735 651 540 420 305 205 126 70 35 15 5 1
編集:上記の回答は、C.Rossによって質問に統合された別の質問からの回答でした
以下のコードは、その回答の計算(5つのサイコロを求める質問に対する)がRでどのように実行されたかを示しています。これらは、ExcelでGlenBの回答で実行された合計に似ています。
# recursive formula nextdice <- function(n,a,l) { x = 0 for (i in 1:6) { if ((l-i >= n-1) & (l-i<=6*(n-1))) { x = x+a[l-i-(n-2)] } } return(x) } # generating combinations for rolling with up to 5 dices a_1 <- rep(1,6) a_2 <- sapply(2:12,FUN = function(x) {nextdice(2,a_1,x)}) a_3 <- sapply(3:18,FUN = function(x) {nextdice(3,a_2,x)}) a_4 <- sapply(4:24,FUN = function(x) {nextdice(4,a_3,x)}) a_5 <- sapply(5:30,FUN = function(x) {nextdice(5,a_4,x)})
コメント
- @ user67275あなたの質問はこの質問に統合されました。しかし、あなたのアイデアはあなたの式の背後にあるのだろうか: “私は式を使用しました:8を取得する方法はありません:5_H_2 = 6_C_2 = 15 ” ?
回答
1つのアプローチは、確率$ X_n = k $が$ xの係数であると言うことです。 母関数$$ \ left(\ frac {x ^ 6 + x ^ 5 + x ^ 4 + x ^ 3 + x ^ 2 + x ^ 1} {6} \ right)の展開における^ {k} $ ^ n = \ left(\ frac {x(1-x ^ 6)} {6(1-x)} \ right)^ n $$
つまり、たとえば、6つのサイコロと$ k = 22 $ のターゲットの場合、$ P(X_6 = 22)= \ frac {10} {6 ^ 6} $が見つかります。 そのリンク(math.stackexchangeの質問への)は他のアプローチも提供します
コメントを残す