如何使用rand()生成数组中的数字

时间:2016-11-28 22:19:24

标签: c++

不是手动输入数组中的数字,而是如何在数组中随机生成这10个数字?他们可以在任何地方,只需要这10个数字

int array[length] = { 1000, 2000,3000,4000,5000,6000,7000, 8000, 9000, 10000};

2 个答案:

答案 0 :(得分:1)

您可以使用std::shuffle随机排列数组中数字的位置(改编自reference documentation sample):

const size_t length = 10;
int array[length] = { 1000, 2000,3000,4000,5000,6000,7000, 8000, 9000, 10000};

std::random_device rd;
std::mt19937 g(rd());

std::shuffle(std::begin(array), std::end(array), g);

shuffle()调用后,值会显示在array

中的随机位置

答案 1 :(得分:0)

如果您想使用非库算法,可以使用位于随机确定位置的另一个元素切换数组的每个元素。在代码中,它看起来像这样:

int array[length] = {1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000};
srand(time(NULL));
int randompos, temp;
for (int i = 0; i < length; i++) {
   randompos = rand % 10;
   temp = array[i];
   array[i] = array[randompos];
   array[randompos] = temp;
   //here, you could have a cout << array[randompos] << " "; to test
}