我正在尝试用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)
这是做什么的rand():
返回
?0?之间的伪随机整数值。和RAND_MAX(0并RAND_MAX包括在内)。
RAND_MAX 是实现的定义,但将为“至少32767”。
除了“这是如何指定”之外没有其他“为什么”。
如果您想要一个包含一些负数的范围,则可以应用一些数学运算(例如,减法)。
注意事项:
rand()不建议用于严重的随机数生成需求。建议使用C ++ 11的随机数生成工具来代替rand()。(自C ++ 11起)
所述设施为您提供了更好的控制和更好的分配(示例)。