相关疑难解决方法(0)

生成1,000,000个随机排列的样本

我正在处理大量的整数排列.每个排列中的元素数量为K.元素大小为1个字节.我需要生成N个唯一的随机排列.
约束:K <= 144,N <= 1,000,000.

我想出了以下简单的算法:

  1. 生成N个随机排列的列表.将所有排列存储在RAM中.
  2. 对列表进行排序并删除所有重复项(如果有).重复数量相对较少.
  3. 如果有任何重复项,请将随机排列添加到列表中,直到有N个排列并返回到步骤2.

有一个更好的方法吗?特别是,有没有办法不将所有排列存储在RAM中(在生成时将它们写在磁盘上)?

编辑:最后,需要按顺序访问生成的排列(逐个访问,不需要随机访问).RAM是更关键的因素(我宁愿不在RAM中同时存储所有排列).

language-agnostic algorithm permutation combinatorics random-sample

3
推荐指数
2
解决办法
1400
查看次数