C++;具有3个相似侧面的模具等级 我是C++初学者,我正在尝试创建一个骰子类。问题是模具需要有三个相同的侧面。因此,1 1 2 3 4。我真的不知道如何实现这一点。我还必须记录它滚动数字的时间百分比。到目前为止,我有这个,我有点卡住了
Die.HC++;具有3个相似侧面的模具等级 我是C++初学者,我正在尝试创建一个骰子类。问题是模具需要有三个相同的侧面。因此,1 1 2 3 4。我真的不知道如何实现这一点。我还必须记录它滚动数字的时间百分比。到目前为止,我有这个,我有点卡住了,c++,C++,Die.H #pragma once #include <iostream> #include <string> using namespace std; class Die { public: Die(); ~Die();
#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 die;
cout << die.roll();
cout << die.roll;
模具;
不能包含
#包括
#包括
#包括
使用名称空间std;
级模
{
公众:
//注意:rand()已被弃用
int roll(){返回_边[rand()%6];}
私人:
std::array_side={1,1,1,2,3,4};
};
int main()
{
std::向量卷;
//跟踪所有卷
对于(int x=0;x<100;++x)
rolls.push_back(Die{}.roll());
//一个是多少卷?
双一=标准::计数(
rolls.begin(),
rolls.end(),
1);
你现在能得到一个介于1
和6
之间的数字吗?现在如何将最大值设为4
?也许可以用简单的算术来完成?因为没有一个值可以小于1
,你可以有一个快速的条件来确定这一点。你将自动有三个“边”作为1
。或者使用您已经试验过的技术,只需将代码放入roll
函数?减去循环并使用返回而不是cout
。哇。我没有考虑将试验代码放入roll函数中。它很有效!谢谢。有关于跟踪百分比的建议吗掷骰次数e?记录所有掷骰次数,可能在数组中,数组[0]是掷骰次数1等。然后数组[0]/sum(数组)是百分比。无关:一种更现代的随机骰子方法:
Die die;
cout << die.roll();
cout << die.roll;
int arr[] = { 0, 0 , 0, 1, 2, 3 };
int random;
for (int i = 0; i < 10; i++)
{
random = rand() % 6;
cout << arr[random] << " ";
}
#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;
}