C++生成随机向量

Mic*_*dge 0 c++ random vector

我刚刚开始,试图学习编程.所以我现在用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.

Cal*_*eth 7

扩展@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)