1
到现在为止,我一直在使用一个列表来跟踪所有遇到的唯一数字。我正在使用一个随机数生成器来获得1到n之间的随机数。如果这个数字已经在我的列表中,那么我只是继续生成随机数字,直到我遇到一个不在我列表中的数字。当我收到一个不在我的名单上的新号码时,我将它添加到我的名单中,并重复该过程,直到列表中出现所有'n'号码。生成前n个自然数的随机排列的最有效方法是什么?
显然这种方法效率很低。有人可以提出一个有效的解决方案吗?
到现在为止,我一直在使用一个列表来跟踪所有遇到的唯一数字。我正在使用一个随机数生成器来获得1到n之间的随机数。如果这个数字已经在我的列表中,那么我只是继续生成随机数字,直到我遇到一个不在我列表中的数字。当我收到一个不在我的名单上的新号码时,我将它添加到我的名单中,并重复该过程,直到列表中出现所有'n'号码。生成前n个自然数的随机排列的最有效方法是什么?
显然这种方法效率很低。有人可以提出一个有效的解决方案吗?
可能重复[生成一个统一的随机排列](http://stackoverflow.com/questions/7902391/generate-an-uniform-random-permutation) –