如何创建一个非常大的唯一整数数组?

e w*_*ess 2 c++ arrays random numbers

我的并行编程类的一部分作业是创建一个包含3.13亿个唯一整数的文件.我想我会将两个随机数加在一起得到一个非常大的范围,但检查唯一性的最佳方法是什么?

我应该创建一个数组并每次搜索数组进行匹配吗?这似乎效率很低.

编辑 - 问题是最终对列表进行排序(使用线程/多核),因此使用顺序列表不起作用.

Man*_*rse 8

您可以按顺序填充文件 - 生成的文件如下所示:

0 1 2 3 4 5 6 7 8 9 ... 312999999

这些数字生成起来非常简单,并且保证是唯一的.

  • `<algorithm>中的@ewagness [std :: random_shuffle](http://en.cppreference.com/w/cpp/algorithm/random_shuffle) (6认同)
  • @ewagness像Mankarse说的那样生成它们,然后随机进行随机播放. (4认同)