【发布时间】:2020-02-21 18:30:05
【问题描述】:
int nextInt(int n) {
return rand() / static_cast<double>(RAND_MAX) * n;
}
我发现有人写了上面的函数(nextInt),他说nextInt 在 [0, n - 1] 中返回一个随机整数,但我认为nextInt 在 [0, n] 中返回一个随机整数.我想知道谁是对的,为什么?
【问题讨论】:
-
STL 先生的短视频:rand() 被认为有害 - channel9.msdn.com/Events/GoingNative/2013/… 回答您的问题等等。
-
那么结论是什么?
-
观看或不观看 - 总结所有错误(
rand)就是视频的内容。您的具体问题大约在 6 点 10 分开始。引用:“......非常不统一......” -
如果我在 Visual Studio 中运行它(
RAND_MAX只是32767),我很快就会得到n。 -
其实这样的细节在文档中很容易找到。例如cppreference.com:返回一个介于0和 RAND_MAX 之间的伪随机整数值(包括 0 和 RAND_MAX)。(强调我的。)
标签: c++ function math random floating-point