首页 > 解决方案 > 如何模拟具有不同面数的掷骰子?

问题描述

下面的代码采用用户提供的骰子面数,然后调用一个函数来返回掷骰子的随机结果。但是,我不知道如何在 1 和提供的数字之间生成一个随机数。

#include <iostream>
    using namespace std;
    int main() {
      int numberOfSides = 0;

      do
      {
        cout << "How many sides do you want the die to have? ";
        cin >> numberOfSides;
        if (numberOfSides <= 0)
        {
          cout << "Error: Please enter a positive integer!" << endl << endl;
        }
      }  while (numberOfSides <= 0);

      int result = rollDie(numberOfSides);
      cout << "You rolled a " << result << endl;
    }

    int rollDie(int numberOfSides) 
    {
      // Complete this function  
    }

标签: c++function

解决方案


随机数生成在 C++ 参考中作为示例进行了描述。

请看这里

在那里你还会找到描述。我用引用的代码完成了你的功能。

请参见:

#include <iostream>
#include <random>

int rollDie(int numberOfSides)
{
    std::random_device rd;  //Will be used to obtain a seed for the random number engine
    std::mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
    std::uniform_int_distribution<> dis(1, numberOfSides);
    return dis(gen);
}


int main() {
    int numberOfSides = 0;

    do
    {
        std::cout << "How many sides do you want the die to have? ";
        std::cin >> numberOfSides;
        if (numberOfSides <= 0)
        {
            std::cout << "Error: Please enter a positive integer!\n\n";
        }
    } while (numberOfSides <= 0);

    int result = rollDie(numberOfSides);
    std::cout << "You rolled a " << result << "\n";
}

推荐阅读