生成50个随机数并将它们存储到数组c ++中

时间:2014-10-28 16:45:41

标签: visual-c++

这是迄今为止我所拥有的功能。这只是问题的开始,它要求为输出生成一个10乘5的数字组的随机数,然后在它之后按数字大小排序,但我只是想先得到这个部分失败。

/* Populate the array with 50 randomly generated integer values
* in the range 1-50. */
void populateArray(int ar[], const int n) {
    int n;
    for (int i = 1; i <= length - 1; i++){

        for (int i = 1; i <= ARRAY_SIZE; i++) {
            i = rand() % 10 + 1;
            ar[n]++;
        }

    }
}

1 个答案:

答案 0 :(得分:0)

首先,我们要使用std::array;它有一些不错的属性,其中之一就是它不会像指针那样衰变。另一个是它知道它的大小。在这种情况下,我们将使用模板使populateArray成为足够通用的算法。

template<std::size_t N>
void populateArray(std::array<int, N>& array) { ... }

然后,我们想删除所有&#34; raw&#34; for循环。 std::generate_n与一些随机生成器相结合似乎是个不错的选择。

对于数字生成器,我们可以使用<random>。具体来说是std::uniform_int_distribution。为此,我们需要启动并运行一些发电机:

std::random_device device;
std::mt19937 generator(device());
std::uniform_int_distribution<> dist(1, N);

并在我们的std::generate_n算法中使用它:

std::generate_n(array.begin(), N, [&dist, &generator](){ 
    return dist(generator); 
});

Live demo