这是迄今为止我所拥有的功能。这只是问题的开始,它要求为输出生成一个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]++;
}
}
}
答案 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);
});