我是 C++ 的新手,我有一个数组操作问题。我有一个长度为 100 的 X 数组,我需要用 1 到 10 (1,2,3,4,5,6,7,8,9,10) 的整数值随机填充 X 的值。 我知道会有重复,可能像 1 打印十次等等,但这确实是我想要的。
这是我的:
X 的数组:
int X[100];
这是我的代码片段:
int* X = NULL;
int* val = NULL;
int length1= 100;
int length2= 10;
X = new int[length1];
val = new int[length2];
int i;
int j;
for (i = 0; i < isi; i++) {
val[i] = i;
for (j = 0; j < length1; j++) {
if (j > i) {
X[j] = val[i];
} else {
X[j] = val[0];
}
cout << "X[" << j << "] = " << X[j] << "\n";
Sleep(1);
}
}
上面的代码使索引 0 到 99 的数组 X 的值为 0,然后索引 0 到 99 的值为 1,因此直到索引 0 到 99 的另一个索引的值为 9。
这不是我想要的,我想要的是(如果它不是随机的)索引 0 到 9 的值为 0,然后 10 到 19 的值为 1 ...直到索引 90 到 99 有值为 9。希望我的解释清楚。
我在 stackoverflow 中遇到了一个问题:How would you make an array of 10000 with only values of 1-1000 inclusive?
但还是无法解决我自己的问题。 有人可以给我解决方案吗。
提前致谢
最佳答案
#include <stdlib.h>
int main(int argc, char **argv) {
int r[100];
for (int i = 0; i < 100; ++i) {
r[i] = rand() % 10 + 1;
}
}
对于某些输出,您可以 #include <iostream>
然后 std::cout << "r[" << i << "] = " << r[i] << "\n"
每次赋值后在循环内。
如果您想每次为不同的序列播种随机数生成器,那么 #include <time.h>
然后 srand(time(NULL))
在您第一次调用 rand
之前.
关于c++ - 如何用范围内的随机值填充数组? (重复是可以的。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26051101/