我需要创建一个长度比数字短的数组。我必须选择的范围。 在示例中,我有一个由10 int组成的数组,范围在20到50之间。 这意味着这个问题("使用随机算法")的大多数asnwers(在各种网站上找到)都无法工作。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <time.h>
using namespace std;
int main() {
const int N = 10;
int arr[N];
srand(time(0));
// Just creates the array, but with repetitions
// for (int i=0; i<N; i++) {
// arr[i] = (rand()%31)+20;
// }
for (int i = 0; i <= N; ++i) {
bool valid = true;
do {
arr[i] = ((rand()%31)+20);
for (int j = 0; j < i; ++j) {
if (arr[i] == arr[j])
valid = false;
else
valid = true;
}
} while(!valid);
}
使用&#34; else&#34;我检查了之前的值,如果它相同,则会更改。 但是如果相同的数字比前一个数字更远,那么这个算法不会改变最后一个数字,因为&#34; else&#34;以前的正确号码结束了。 如果我删除了其他内容,我仍然会卡在cicle中,每次都会更改数字。