是否有任何算法,它在合理的时间内提供给定列表的混乱排列?我使用Python,但我担心,由于给定列表中的长度为1.1百万个元素,给定的 shuffle 函数将无法提供良好的解决方案。
我做了一些谷歌搜索并没有找到任何有用的结果,如果有这样的事情会很惊讶,但我真的很感激答案
答案 0 :(得分:1)
使用随机播放。对于任何实际目的而言,它足够快且充分混乱。
答案 1 :(得分:1)
只想解决以所有组合都可能的方式产生洗牌的方法。正如您所注意到的,伪随机数生成器受到您可以创建的组合数量的限制。要创建真正的洗牌,您需要真正的RNG。
步骤1:使用在线RNG获得足够的随机数以满足熵要求(即,检索RN的log(n!)/ wordsize数量)。有关详细信息,请参阅https://softwareengineering.stackexchange.com/questions/76822/i-need-a-true-random-number-generator-web-service
步骤2:一旦你有一个足够长的RN,比如k,问题就变成了创建第k个排列。搜索互联网,你会发现很多解决方案。例如。 Given n and k, return the kth permutation sequence