为什么rand()的范围小于int的范围?

Mar*_*aru 0 c++ random

我正在尝试用5000个随机数填充向量。每个数字都是整数。但是我想知道为什么rand()只给出正整数,为什么它从不给出整数可以容纳的最大值。有什么理由吗?

#include<iostream>
#include<cstdlib>
#include<ctime>

using namespace std;

int main()
{

unsigned seed = time(0);
srand(seed);

vector<int> vect(5000);

for (int i = 0; i < vect.size(); i++)
{
    vect[i] = rand();
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 6

这是做什么的rand()

返回?0?之间的伪随机整数值。和RAND_MAX0RAND_MAX包括在内)。

RAND_MAX 是实现的定义,但将为“至少32767”。

除了“这是如何指定”之外没有其他“为什么”。

如果您想要一个包含一些负数的范围,则可以应用一些数学运算(例如,减法)。

注意事项:

rand()不建议用于严重的随机数生成需求。建议使用C ++ 11的随机数生成工具来代替rand()。(自C ++ 11起)

所述设施为您提供了更好的控制和更好的分配(示例)。