c++ - 如何模拟具有不同面数的掷骰子?
问题描述
下面的代码采用用户提供的骰子面数,然后调用一个函数来返回掷骰子的随机结果。但是,我不知道如何在 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!\n\n";
}
} while (numberOfSides <= 0);
int result = rollDie(numberOfSides);
std::cout << "You rolled a " << result << "\n";
}
推荐阅读
- excel - 获取运行时错误 1004 - 对象“验证”的方法“添加”失败
- ios - 当 Safari 不是使用 URL 方案的默认浏览器时,从 iOS 14 上的应用程序启动 Safari
- kotlin - Kotlin 中的 setOnKeyListener 参数
- c# - 我想在 WPF 图表中更改轴上标记的颜色
- c - 缺少字符和打印错误
- json - golang websocket.JSON.Receive无效字符'q'寻找值的开始
- typescript - 如何使用打字稿等待for循环firebase云功能
- java - 有没有办法找出占据 JVM eden 区域中大部分内存的“unreachable_objects”的传出/传入引用?
- csv - JMeter - 阅读下一行问题
- azure - 如何使用函数应用将文件从源文件夹复制到目标文件夹并删除 Azure 存储帐户中的源文件夹文件