用于计算x个游戏数量后的赢额和损失百分比的C ++程序

时间:2017-03-29 01:46:42

标签: c++

我正在尝试制作一个能够计算游戏掷骰胜负概率的程序。我得到了我的代码" 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;
    }
}

0 个答案:

没有答案