まず第一に、この質問をどこに投稿すべきかわからない。統計の問題がNP-Completeであるかどうか、およびプログラムでそれを解決しないかどうかを尋ねています。統計問題が中心点であるため、ここに掲載しています。
私は問題を解決するためのより良い式を見つけようとしています。問題は、4d6(通常の6面のサイコロ4枚)を持っている場合、それらを一度に振って、最も小さい数字(「ドロップ」と呼ばれる)のダイスを取り除き、残りの3を合計して、それぞれの可能な結果の確率です?私は答えがこれであることを知っています:
Sum (Frequency): Probability
3 (1): 0.0007716049
4 (4): 0.0030864198
5 (10): 0.0077160494
6 (21): 0.0162037037
7 (38): 0.0293209877
8 (62): 0.0478395062
9 (91): 0.0702160494
10 (122): 0.0941358025
11 (148): 0.1141975309
12 (167): 0.1288580247
13 (172): 0.1327160494
14 (160): 0.1234567901
15 (131): 0.1010802469
16 (94): 0.0725308642
17 (54): 0.0416666667
18 (21): 0.0162037037
平均は12.24で、標準偏差は2.847です。
私は上記の答えをブルートフォースで見つけましたが、どのように、または公式が存在するのかわかりません。この問題はNP完全であると思われるため、ブルートフォースによってのみ解決できます。3d6(3つの通常の6面のサイコロ)のすべての確率を取得し、それぞれを上に傾けることが可能です。私はすべてのサイコロが保持されているとき、私は高速式を持っているので、これはブルートフォースよりも速くなります。
私は大学ですべてのサイコロを保持するための式をプログラムしました。私は統計学の教授にそれについて尋ねたところ、彼はこのページを見つけました。このフォーミュラとブルートフォースには大きなパフォーマンスの違いがあります。50d6は20秒かかりましたが、8d6は40秒後に最低のクラッシュを落とします(クロームはメモリ不足になります)。
この問題はNP-Completeですか? はいの場合、証拠を提供してください、いいえの場合、それを解決するために非総当たり式を提供してください。
NP-Completeについてはあまり知らないので、NP、NP-Hard、または他の何かを考えているかもしれません。NP完全性の証明は役に立たない。私がそれを求める唯一の理由は、人々が推測するのを防ぐことだ。そして、私がこれに取り組んでから長い時間がかかっているので、私と一緒に裸にしてください:統計を覚えていないし、これを解決する必要があるかもしれません。
理想的には、N個のサイコロのN個がドロップされたときに、Y個のサイコロのX個のより一般的な式を探していますが、もっと単純なものから始めています。
編集:
また、周波数を出力するよりも数式を使用しますが、確率のみを出力することもできます。
興味がある人のために、私はGitHubでJavaScriptでwhuberの答えをプログラムしました(このコミットでは、テストでは実際に定義された関数を使用しています)。