2013年3月29日星期五

java puzzers 94: shuffle


主要代码就是这一段:
        Random rnd=new Random();
        for (int i = 0; i < size; i++)
            swap(array, i, rnd.nextInt(size));

这个算法是不公平的,Collections.shuffle用的是:

        for (int i = size; i > 1; i--)
             swap(arr, i - 1, rnd.nextInt(i));

其实就是(有点难看):

        for (int i = 0; i < size; i++)
            swap(array, i, i+rnd.nextInt(size-i));



没有评论:

发表评论