C++;具有3个相似侧面的模具等级 我是C++初学者,我正在尝试创建一个骰子类。问题是模具需要有三个相同的侧面。因此,1 1 2 3 4。我真的不知道如何实现这一点。我还必须记录它滚动数字的时间百分比。到目前为止,我有这个,我有点卡住了

C++;具有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();

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 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;
}