我正在尝试创建一个程序,它将使用一个函数来翻转硬币,并使用Main()方法,返回它在2D数组中的头部,尾部和边缘上着陆的结果。它有40%的几率落在头上,有40%的几率落在尾巴上,有20%的几率落在它的边缘。
我有这个功能,但它不会改变Main()方法中的数字。我究竟做错了什么?任何帮助将不胜感激。
#include <iostream>
#include <ctime>
using namespace std;
void coinToss();
int heads = 0, tails = 0, edge = 0;
int main(){
const int NUMROWS = 3;
const int NUMCOLS = 2;
srand(time(NULL));
coinToss();
cout << "Heads: " + heads << endl; //just to check if function works properly
system("pause");
}
void coinToss(){
int flip = 0;
for (int i = 0; i<100; i++){
flip = rand() % 10 + 1;
if (flip < 4){
heads++;
}
else if (flip < 8){
tails++;
}
else {
edge++;
}
}
}
答案 0 :(得分:0)
您的输出行不正确:
cout << "Heads: " + heads << endl;
这与
相同cout << ("Heads: " + heads) << endl;
与
相同cout << &("Heads: "[heads]) << endl;
由于heads
大于7,可能会导致某种垃圾。相反,您必须使用<<
:
cout << "Heads: " << heads << endl;
using namespace std
。<random>
库而不是<cstdlib>
的{{1}}。