このアプリケーションの目的は、多数のクラップス ゲームをシミュレートすることです。1 つのゲームをプレイし、ユーザーの入力を求めて情報を出力する別のバージョンがあります。このバージョンの目的は、10,000 ゲーム後の結果のみを表示することです。結果は、ハウスが勝ったゲーム数、プレイヤーが勝ったゲーム数、およびゲームごとのロールの平均数です。最初に勝ったゲームを適切にインクリメントしたかったので、まだロールに実装していません。
これを実行するとどうなるかは数字の壁 (これは cout << playerwintotal; によるものです) であり、意図的なものですが、ループが 10,000 回実行されるまで、数字は 3 ~ 4 回複製されます。
すなわち。1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 5 5 5など
最終結果は通常、次のようになります。
10,000 ゲームのクラップスの後:
プレイヤーは 2502 ゲームに勝ちました。
家は3625試合に勝ちました。
これを修正する方法はよくわかりませんが、すべてが本来あるべき状態であると言える限り、これは C++ の 4 日目に過ぎません。
#include <iostream>
#include <string>
#include "randgen.h"
using namespace std;
const int MAX_PLAYS = 10000;
int main() {
int roll;
RandGen rg;
int die1 = rg(6) + 1;
int die2 = rg(6) + 1;
int point;
int total = die1 + die2;
bool playerwin;
bool housewin;
int playerwintotal = 0;
int housewintotal = 0;
for (int i = 0; i < MAX_PLAYS; ++i) {
roll = 1;
if (roll == 1 && (total == 7 || total == 11)) {
playerwin = true;
++playerwintotal;
}
if (roll == 1 && (total == 2 || total == 3 || total == 12)) {
housewin = true;
++housewintotal;
}
if (roll == 1 && (total != 2 || total != 3 || total != 12)) {
point = total;
playerwin = false;
housewin = false;
}
die1 = rg(6) + 1;
die2 = rg(6) + 1;
total = die1 + die2;
++roll;
if (total == point) {
playerwin = true;
++playerwintotal;
}
if (total == 7) {
housewin = true;
++housewintotal;
}
cout << playerwintotal;
}
cout << "After " << MAX_PLAYS << " games of craps:\n" << "Player won "
<< playerwintotal << " times\n" << "The house won " << housewintotal
<< " times\n";
return 0;
}