0

だから私はクラップスを再生するシミュレーターを実行するつもりです。

私の割り当てでは、シムを10,000,000回実行する必要があります。

それは問題ではありません。私はシムを作成し、実行する方法と必要な変数を作成する方法を知っています。

よくわからないのですが、各ゲームの結果をどのように保存すればよいのでしょうか。

私が最後に見つける必要があるのは:

ゲームあたりの平均ロール数30以上のロールを必要としたゲームのゲーム数の最大ロール数勝利数損失数勝利の確率最長の勝利のシーケンスと最長の損失のシーケンス

簡単なことですが、10,000,000の番号を保存して、簡単にアクセスする方法がわかりません。

たとえば、最初の例:平均ロール数10,000,000アイテムを含む配列リストを作成する必要がありますか?各ゲームの最後に1つのアイテムを追加してから、それらをすべて合計して10,000,000で割りますか?

私はこれがうまくいくはずだと理解しています。別の方法があるのか​​、それとももっと良い(より効率的な)方法があるのだろうかと思っています。

この質問の新しい部分:メソッドから複数の値を返すことはできますか?現在、シミュレーションは10,000,000回実行され、そのたびに勝ち負けを返します。しかし、各ゲームのロール数を返すためにも必要です...そうでないと、平均ロール数と最大ロール数、および30ロールを超えるゲーム数の値を把握できません。

ここに何かアイデアはありますか?

4

3 に答える 3

1

統計を保存せずに、統計を計算することができます。たとえば、クラスに「平均」フィールドがある場合は、各シミュレーションの後でaverage = ((number of rolls this game) + (total rolls so far)) / (number of games so far)。他の統計についても同じことができます。

于 2013-03-07T04:14:30.767 に答える
1

必要な統計の配列を維持する必要はありません。

ゲームごとの平均ロール数については、変数を保持するだけcumulativeNumberOfRollsです。すべてのゲームの後で、そのゲームのロール数を出力して、この変数に追加するだけです。すべてのシミュレーションが完了したら、この値をシミュレーションの総数(10,000,000)で割るだけです。

最大の場合 ロールの数、再び単一の変数を保持します、例えばmaxRolls; すべてのゲームの後に、そのゲームのロール数を出力し、それをこの変数と比較します。このゲームのロール数が多い場合はmaxRolls、新しい値で更新してください。同じアプローチ(単一の変数を持ち、ゲームごとに更新する)を試して、30以上のロール勝ち数、負け数を必要とするゲームの値を取得します。問題が発生した場合は、コメントで話し合うことができます。

勝ち負けのシーケンスを最長にするには、一連の変数を維持する必要があります。

  • 全体で最長の勝利シーケンス
  • 全体で最長の損失シーケンス
  • 現在のシーケンスカウント
  • 現在のシーケンスタイプ(現在のシーケンスが勝ちシーケンスか負けシーケンスかを示します)

アプローチの概要は次のとおりです。すべてのゲームの後、ゲームの結果をと比較しcurrent sequence typeます。それらが同じである場合、たとえば、現在のゲームの結果が勝利であり、現在のシーケンスタイプも勝利である場合は、を更新current sequence countして次のゲームに進みます。それらが異なる場合は、2つのシナリオを検討し、それらに対してわずかに異なることを行う必要があります。1つ説明します-現在のゲームの結果は負けであり、current sequence type勝ちです。このシナリオでは、と比較current sequence countlongest win sequence overall、それ(current sequence count)が大きい場合は、を更新するだけlongest win sequence overallです。current sequence typeこの後、を損失に変更し、current sequence countを1に設定します。

上記のアプローチを2番目のシナリオに拡張します。現在のゲームの結果は勝ちであり、current sequence type負けです。ご不明な点がございましたら、コメントでお気軽に投稿してください。

于 2013-03-07T05:04:51.800 に答える
0

実行回数は決まっているので、配列リストではなく配列を使用する方がよいでしょう(高速)。実際には、合計2つの配列のみが必要であるように思われます。1つは各ゲームの結果(勝ち/負けの場合はtrue / false)をリストし、もう1つはそのゲームのロール数をリストします。シミュレーションを実行するときに、これらを埋めます。次に、統計を取得するために、いずれかの配列を含む一連の簡単な計算を実行します。それは私にとってそれについて行くための最良の方法のように思えます。過度の努力なしに、あなたがはるかに効率的になるとは思わない。

于 2013-03-07T04:11:46.513 に答える