首页 > 解决方案 > 随机函数可以返回的范围是多少?

问题描述

int nextInt(int n) {
    return rand() / static_cast<double>(RAND_MAX) * n;
}

我发现有人写了上面的函数(nextInt),他说nextInt在[0,n-1]中返回一个随机整数,但我认为nextInt在[0,n]中返回一个随机整数。我想知道谁是对的,为什么?

标签: c++functionmathrandomfloating-point

解决方案


随机函数可以返回的范围是多少?

标准将其指定为 [0, RAND_MAX](含)。

我想知道谁是对的,为什么?

你是。nextInt 在技术上可以返回 n,但它这样做的机会很小。只有当 rand() 返回 RAND_MAX 时才会发生这种情况(根据评论,在理论情况下 int 的范围不能完全用 double 表示的情况下可能有一些其他接近的值)。


推荐阅读