問題タブ [dice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - サイコロのオッズ: クラップスのゲームをシミュレートする
弟はあと数週間で 21 歳になり、両親と私は弟をラスベガスに連れて行きます。21 歳のとき、私はベガスでギャンブルに $200 を持ってきて、家には約 $450 を持って帰りました。ほとんどがクラップスでした。私はこの旅行のために再び 200 ドルを持っていくつもりです。行く前に、クラップス シミュレーションを実行して、お金を 2 倍にできるかどうかを確認しようと考えました。
複数の情報源から、クラップスで最大オッズでパスライン ベットを行う場合、ハウスのアドバンテージが最も小さいという情報を読みました。私の記憶によると、Wizard of Odds の調査によると、ストリップのほとんどのカジノのオッズは 3-4-5 で、最低 $5 です。これを考慮して、PHP でのクラップス セッション (100 個のサイコロを振る) のシミュレーションを次に示します。
ここで私の数学に何か問題がありますか? 各セッションには山と谷がありますが、このシミュレーションでは、破綻する前に資金が 2 倍になることがよくあります。たとえそれがほんの数パーセントであっても、家が常にクラップスで有利であることを考えると、私はこの結果に困惑しています.
c++ - クラステンプレートコンストラクターの専門化
テンプレートの特殊化をいじっていて、使用されているポリシーに基づいてコンストラクターを特殊化しようとすると問題が発生しました。これが私が動かそうとしているコードです。
... \ main.cpp(29):エラーC3860:クラステンプレート名に続くテンプレート引数リストは、テンプレートパラメータリストで使用される順序でパラメータをリストする必要があります... \ main.cpp(29):エラーC2976:'Die':テンプレート引数が少なすぎます...\main.cpp(31):エラーC3860:クラステンプレート名に続くテンプレート引数リストは、テンプレートパラメータリストで使用されている順序でパラメータをリストする必要があります
これらは、Microsoft Visual Studio 2010で発生するエラーです。専門分野の正しい構文がわからないか、この方法ではできないのではないかと考えています。
distribution - 6面サイコロのオッズ分布の計算
6 面ダイスのロール数の変化のオッズ分布を計算しようとしています。たとえば、3d6 の範囲は次のように 3 から 18 です。
私はそれを計算するためにこのphpプログラムを書きました:
内側の $j for ループは、フロア関数とモジュラス関数のマジックを使用して、桁数がサイコロの数である基数 6 のカウント シーケンスを作成するため、3d6 は次のようにカウントされます。
この関数はそれぞれの合計を取るので、3,4,5,6,7,8,4,5,6,7,8,9,5 などとなります。6^3 の可能な結果すべてを調べ、$distribution 配列の 3 から 18 までの対応するスロットに 1 を追加します。かなり単純です。ただし、約 8d6 までしか機能しません。その後、数十億の計算を実行しているため、サーバーのタイムアウトが発生します。
しかし、死ぬ確率は甘いベルカーブ分布に従うので、私はそれが必要だとは思いません。数値計算をスキップして、曲線自体に直接進む方法があるかどうか疑問に思っています。たとえば、80d6 (範囲: 80-480) でこれを行う方法はありますか? 6^80 の計算を行わずに分布を投影できますか?
私はプロのコーダーではなく、確率はまだ私にとって初めてなので、すべての助けに感謝します!
スティーブン
algorithm - n 個のサイコロを投げた場合に考えられるすべての結果の行列を生成します (順序は無視されます)。
順序が重要な場合、考えられるすべての結果のマトリックスを生成するのはかなり簡単です。これを行う 1 つの方法は、ここexpand.grid
に示すように使用することです。
そうでない場合はどうなりますか?
私が正しい場合、可能な組み合わせの数は です(S+N-1)!/S!(N-1)!
。ここで、S はサイコロの数で、それぞれに 1 から N までの番号が付けられた N 個の面があります (同じ数字が現れる可能性があるため、よく知られている組み合わせの公式とは異なります)。複数のサイコロで)。例えば、六面体サイコロを4つ投げる場合、N=6、S=4なので、可能な組み合わせの数は(4+6-1)!/4!(6-1)!です。= 9!/4!x5! = 126. これら 126 の可能な結果のマトリックスを生成するにはどうすればよいですか?
ありがとうございました。
java - 余分な不要なデータをもたらす再帰
サイコロを振るモジュールを作成しています。y 面の x ダイスが与えられた場合、考えられるすべてのロールの組み合わせのリストを作成しようとしています。
このコードは、それぞれ 1、2、3 のラベルが付いた 3 つの面を持つ 3 つのサイコロを想定しています (「マジック ナンバー」を使用していることは認識していますが、これは基本コードを単純化して機能させるための試みにすぎません)。
(dump() は list[] の内容を表示するだけの簡単な方法です。変数iは現在使用されていません。)
私がやろうとしているのは、list[index] を 1 ずつインクリメントし、リスト全体の長さをステップ実行し、進むにつれてインクリメントすることです。
これは私の「最善の試み」のコードです。出力は次のとおりです。
大胆な出力は、私が探しているものです。残りを取り除く方法がわかりません。(これは、それぞれ 3 つの面を持つ 3 つのサイコロを想定しています。再帰を使用して、y 面を持つ任意の x サイコロにスケールアップできます。)
[1][1][1] [1][1][1]
[1][1][1] [1][1][2] [1][1][3] [1][2][3]
[1][2][1] [1][2][2] [1][2][3] [1][3][3]
[1][3][1] [1][3][2] [1][3][3] [2][3][3] [2][1][3]
[2][1][1] [2][1][2] [2][1][3] [2][2][3]
[2][2][1] [2][2][2] [2][2][3] [2][3][3]
[2][3][1] [2][3][2] [2][3][3] [3][3][3] [3][1][3]
[3][1][1] [3][1][2] [3][1][3] [3][2][3]
[3][2][1] [3][2][2] [3][2][3] [3][3][3]
[3][3][1] [3][3][2] [3][3][3]
書式設定についてお詫び申し上げます。
どんな助けでも大歓迎です。(この方法は、実際には非常に些細なことにデータを使用するために端を発していましたが、個人的な課題になりました。:)
編集: この問題を解決するための別のアプローチがある場合、私はすべて耳を傾けますが、現在の問題を解決し、再帰を何か有用なものにうまく使用したいと考えています.
edit2: 「簡単な修正」を含む実行中のコード。未使用の変数と奇妙なハックに注意してください。まだクリーンアップしていません。
python - サイコロの目が特定の組み合わせを含んでいるかどうかを判断しますか?
私はPythonでサイコロゲームシミュレーターを書いています。1〜6の整数を含むリストを使用してロールを表します。だから私はこのようなロールを持っているかもしれません:
ロールにスコアリングの組み合わせが含まれているかどうかを判断する必要があります。たとえば、3種類、4種類、2セットの3、ストレートなどです。
これを行う簡単なPythonの方法はありますか?私はいくつかのアプローチを試しましたが、それらはすべて厄介であることが判明しました。
java - Javaセッター、ゲッター(サイコロを振る)
Javaについていくつか質問があります。コードには2つの質問があります(コメントとして残しました)。また、メソッドの設定と取得を使用する目的は何ですか?簡単に説明していただけますか。私は初心者です。ありがとうございました :)
math - サイコロの左/右の数字?
どの数字が上にあり、どちらがあなたに向いているかを知っている場合、標準の6面ダイスの右または左にある数字を計算する式/トリックがあるかどうか疑問に思っていました.
問題を解決するために必要ですが、if ステートメントで 24 の可能性をすべてリストするのは気が進まない...:)
algorithm - サイコロを振るアルゴリズムに助けが必要
次のようなメソッドのアルゴリズムを疑似コーディングするにはどうすればよいですか。
サイコロを転がす - 4 面、6 面、8 面、10 面、または 12 面
このタイプのサイコロは 10 個までロールできます
サイコロの半分以上が 1 の場合、バストしたというメッセージを出力してプログラムを終了します。
いずれかのサイコロが振ったサイコロの種類と同じである場合、グループから最も高い値を取ります。同様に、振ったサイコロのタイプの値に等しいサイコロを再ロールします。
^^^^IE - 六面体のサイコロを 3 つ持っていて、それらを転がして 4、2、6 が出たとしましょう。6 の値が最も高いので、6 の値を取ります。次に、6 だったサイコロを振り直します。6 が出た場合は、その 6 を前の 6 に追加し、再ロールします。そうでない場合は、最高のサイコロを前の値に追加します。
java - サイコロ表記 (再帰降下解析の実装): 区切り記号のないスキャナー
可能であれば、Java Scanner を使用してサイコロ表記の再帰降下解析実装を構築したいと考えています。私は以前にそれについて質問をしましたが、要件が単純化しすぎているようでした。だから私はここで、そのグローバル性における要求を提示しています。
これが java.util.Scanner クラスで実現できることを心から願っていますが、必要に応じて独自のスキャナーを作成します。今は避けたいと思います。
実際、私は次のコードを書き込もうとしました:
しかし、明らかに失敗し続けています。
また、前の質問で示唆されたように、私は findWithinHorizon メソッドを試しましたが、実際には次のパターンを見つけて、現在地からチェックしません。したがって、必要なものでない場合、文字列を「プッシュバック」することはできません...
このコンテキストで java.util.Scanner を使用する方法について何か提案はありますか? それとも、独自のスキャナーを作成する必要がありますか?