好的,所以在过去的几个月中我没有做太多的编码,而且我认为我现在可以重新使用它,因为我有足够的空间来设置适当的工作空间。 因此,我再次基于一个简单的基于控制台的骰子游戏(街头掷骰)开始了自己的工作,这时基本上只是一个模拟。 我遇到的问题是,每次我运行代码时,播放器似乎都具有优势。 随着时间的流逝,情况只会变得更糟。
这是我的代码。
#include <iostream>
#include <ctime>
#include <Windows.h>
int Wins = 0, Losses = 0;
using namespace std;
class Dice
{
private:
int NumSides;
public:
Dice(int NumSides = 6)
{
this->NumSides = NumSides;
}
~Dice()
{
}
int Roll(int NumDice)
{
int Result = 0;
for (int i = 0; i < NumDice; i++)
Result += (rand() % NumSides) + 1;
return Result;
}
};
void PrntScore()
{
cout << "Wins = " << Wins << " Losses = " << Losses << endl;
}
int Won()
{
cout << "YOU WIN!" << endl;
Wins++;
PrntScore();
return 0;
}
int Lost()
{
cout << "YOU LOSE!" << endl;
Losses++;
PrntScore();
return 0;
}
int main()
{
srand(time(NULL));
Dice D;
while (1)
{
int FirstRoll = D.Roll(2);
cout << "First Roll = " << FirstRoll << endl;
if (FirstRoll == 7 || FirstRoll == 11) { Won(); }
else if (FirstRoll == 2 || FirstRoll == 3 || FirstRoll == 12) { Lost(); }
else
{
cout << "Point set = " << FirstRoll << endl;
int NewRoll = 0;
do
{
NewRoll = D.Roll(2);
cout << "New Roll = " << NewRoll << endl;
Sleep(500);
} while (NewRoll != FirstRoll && NewRoll != 7);
if (NewRoll == FirstRoll)
Won();
else
Lost();
}
Sleep(500);
}
return 0;
}
这是代码偏见,还是运气极差?
答案 0 :(得分:1)
rand,srand和RAND_MAX存在很多问题,建议不要使用它们。应该考虑使用C ++ 11 <random>
。