esh*_*lev 9 random algorithm permutation
我想尽可能快地生成随机排列.问题:作为O(n)的knuth shuffle涉及生成n个随机数.由于生成随机数非常昂贵.我想找到一个涉及固定O(1)量随机数的O(n)函数.
我意识到之前已经问过这个问题,但我没有看到任何相关的答案.
只是强调一点:我不是在寻找比O(n)更少的东西,只是一个涉及较少生成随机数的算法.
谢谢
小智 8
创建每个排列的1-1映射到从1到n的数字!(n阶乘).在1到n!中生成一个随机数,使用映射,得到排列.
对于映射,也许这将是有用的:http://en.wikipedia.org/wiki/Permutation#Numbering_permutations
当然,这会很快失控,就像n!很快就会变得很大.