我是C ++的初学者,我正在尝试创建一个DIE类。事情是模具需要有3个相同的边。所以1 1 1 2 3 4。我真的不知道如何实现它。我还必须跟踪它滚动数字的时间百分比。到目前为止,我有这个,我有点卡住了。
Die.H
#pragma once
#include <iostream>
#include <string>
using namespace std;
class Die
{
public:
Die();
~Die();
Die(int numSide);
int roll();
int rollPercentage();
private:
int side;
};
Die.cpp
#include "Die.h"
Die::Die()
{
}
Die::~Die()
{
}
Die::Die() :side(6) {}
Die::Die(int numSide) : side(numSide) {}
int Die::roll() {
return rand() % side + 1;
}
然后在主要内容我将简单地创建一个骰子。这样的事情。
Die die;
cout << die.roll();
cout << die.roll;
只是不确定如何实现3个相同的方并保持跟踪。没有我做过的课程。但我不确定如何用类来实现它。
int arr[] = { 0, 0 , 0, 1, 2, 3 };
int random;
for (int i = 0; i < 10; i++)
{
random = rand() % 6;
cout << arr[random] << " ";
}
答案 0 :(得分:0)
#include <iostream>
#include <array>
#include <vector>
#include <cstdlib>
using namespace std;
class Die
{
public:
// note rand() is deprecated
int roll() { return _side[rand() % 6]; }
private:
std::array<int, 6> _side = { 1, 1, 1, 2, 3, 4 };
};
int main()
{
std::vector<int> rolls;
// keep track of all the rolls
for (int x = 0; x < 100; ++x)
rolls.push_back(Die{}.roll());
// how many rolls were ones?
double ones = std::count(
rolls.begin(),
rolls.end(),
1);
cout << "1 rolled " << 100 * (ones / rolls.size()) << "% of the time.\n";
// repeat above for 2, 3, 4, etc.
return 0;
}