我正在尝试制作一个能够计算游戏掷骰胜负概率的程序。我得到了我的代码" work",但是赢/输百分比应该在50%左右,但我总是在70-80%左右。我花了几个小时寻找我做错了什么,我无法弄明白。我相信错误是在playGame函数中的某个地方。
#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;
int rollDice ();
bool playGame();
int main ()
{
int number;
bool outcome;
int win =0;
int lose =0;
int roll;
double winPercent;
double losePercent;
int track =0;
srand(time(0));
cout << "How many games do you want to play? : ";
cin >> number;
for (int x =0; x < number; x++)
{
track++;
outcome = playGame();
if(outcome ==true)
win++;
else
lose++;
}
winPercent = (double)win/track*100;
losePercent = (double)lose/track*100;
cout << setw(8) << "win %" << setw(8) << "lose %" << endl;
cout << setw(8) << fixed << setprecision(3) << winPercent << setw(8) << losePercent << endl;
return 0;
}
int rollDice()
{
int roll;
roll = (rand() % 6 + 1) + (rand() % 6 + 1);
return roll;
}
bool playGame ()
{
int roll;
bool winner = true;
int firstRoll;
firstRoll = rollDice();
if (firstRoll == 7 || firstRoll == 11)
return winner;
else if (firstRoll == 2 || firstRoll == 3 || firstRoll == 12)
return winner = false;
else
{
do
{
roll = rollDice();
}while (roll != firstRoll && roll != 7 && roll != 2 && roll != 3 && roll != 3);
if (roll == 7 || roll == 11 || roll == firstRoll)
return winner;
else
return winner = false;
}
}