【发布时间】:2013-05-20 04:14:50
【问题描述】:
如果我想生成 0 到 999 之间的 1000 个唯一的数字,我该怎么办?
我的第一次尝试是创建一个数组 {0, 1, 2, ..., 999} 并使用std::random_shuffle 来打乱它们。但是,由于我必须在一个长循环中生成数字,比如说 O(10^7),这种方法会占用运行时间。
有没有更好的方法来解决这个问题?
【问题讨论】:
-
为什么需要 10^7 才能生成 100 个数字
-
@aaronman 这不是 OP 所说的。他需要在一个大约运行 10^7 次的循环中生成它们。
-
每次使用一组不同的随机数?这样做的目的是什么,我认为如果没有更多信息我们就无法解决问题,您不会每次都生成一组不同的随机数而不遍历所有 1000 个数字。