如何模拟不同边数的骰子滚动?

How do a simulate a dice roll with different number of sides?

本文关键字:滚动 何模拟 模拟      更新时间:2023-10-16

以下代码获取用户提供的骰子边数,然后调用函数返回掷骰子的随机结果。但是,我不知道如何生成 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++参考中作为示例进行了描述。

请看这里。

在那里您还可以找到描述。我用引用的代码完成了你的函数。

请看:

#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!nn";
}
} while (numberOfSides <= 0);
int result = rollDie(numberOfSides);
std::cout << "You rolled a " << result << "n";
}