我刚刚开始,试图学习编程.所以我现在用C++编程,我尝试创建一个函数,根据参数生成随机整数向量.所以到目前为止我的功能看起来像这样:
std::vector<int> GenerateRandomVector(int NumberCount,int minimum, int maximum) {
std::vector<int> vecRandomValues;
int i = 0, randValue = 0;
srand(time(NULL));
while (i < NumberCount) {
randValue = rand() % maximum + minimum;
vecRandomValues.push_back(randValue);
i++;
}
return vecRandomValues;
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是它不尊重我给它的最小值和最大值,而且大多数时候,40%的生成数字都是0.我无法弄清楚我在这里做错了什么,也没有任何关于如何解决它的想法.我在Windows 10上使用Clion.
扩展@Some程序员dude的评论:
std::vector<int> GenerateRandomVector(int NumberCount,int minimum, int maximum) {
std::random_device rd;
std::mt19937 gen(rd()); // these can be global and/or static, depending on how you use random elsewhere
std::vector<int> values(NumberCount);
std::uniform_int_distribution<> dis(minimum, maximum);
std::generate(values.begin(), values.end(), [&](){ return dis(gen); });
return values;
}
Run Code Online (Sandbox Code Playgroud)