gpt4 book ai didi

c++ - 随机数生成器最小和最大边界,不起作用?

转载 作者:行者123 更新时间:2023-11-30 00:50:49 26 4
gpt4 key购买 nike

我使用下面的代码在 0 到 4000 之间随机选择一个空头:

std::random_device rd;
std::mt19937 mt(rd());
std::uniform_real_distribution<unsigned short> dist(0, 4000);
unsigned short random_no = dist(mt);

但是,我得到的返回值是 24,583?

最佳答案

您需要将代码更改为:

std::uniform_int_distribution<unsigned short> dist(0, 4000);

您当前使用的 std::uniform_real_distribution 预计仅用于浮点类型。


现在说说标准,因为我喜欢引用!

在标准 (N3797) 26.5.2 [rand.synopsis] 中,其中一项是 std::uniform_real_distribution 的声明:

// 26.5.8.2.2, class template uniform_real_distribution
template<class RealType = double>
class uniform_real_distribution;

将我们链接到 26.5.8.2.2 以获得更多信息,但重要的事情已经在声明中了。模板化类型被命名为 RealType 和 under

标准 26.5.1.1 rand.req.genl]/1

Throughout this subclause 26.5, the effect of instantiating a template:

... d) that has a template type parameter named RealType is undefined unless the corresponding template argument is cv-unqualified and is one of float, double, or long double.

关于c++ - 随机数生成器最小和最大边界,不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23690099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com