c++ - 如何用范围内的随机值填充数组? (重复是可以的。)

标签 c++ arrays random

我是 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/

相关文章:

c++ - 使用 glut,我如何制作它以便我可以通过单击并拖动它来移动场景中的对象?

c++ - 存储对齐数据非对齐

python - 编写一个随机数生成器,基于 0 到 1 之间的均匀分布数,从 Lévy 分布中采样?

algorithm - 均匀分布哈希函数

C - 尝试创建一个 LinkedList 指针数组

java - 是否保证连续两次调用安全随机数会给出不同的数字?

c++ - 使用 C++ 和 i2c-tools 写入和读取虚拟 i2c

c++ - 将任意大小的数组传递给 C++ 函数

c# - 使用 LINQ 排序后获取集合中项目的新索引

ios - 无法将 moveRowAtIndexPath 用于 tableView