C ++ Die类有3个相似的边

时间:2018-02-15 02:18:41

标签: c++

我是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] << " ";
            }

1 个答案:

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