文章字数:170,阅读全文大约需要1分钟
介绍
洗牌算法, Fisher–Yates
随机置乱算法也被称做高纳德置乱算法, 作用是生成一个有限集合的随机排列,即打乱集合,并使每个排列的可能都相等。
步骤
- 从n个数组中选取低(1到n-1)中随机选择一个,并和
n
替换
- 再从(1到n-2)中随机选择一个,和
n-2
个替换
…
直到全部替换完成
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public static void main(String[] args) { int[] arr = new int[10]; int i;
for (i = 0; i < 10; i++) { arr[i] = i + 1; }
for (i = arr.length - 1; i > 0; i--) { int rand = (new Random()).nextInt(i + 1);
int temp = arr[i]; arr[i] = arr[rand]; arr[rand] = temp; } }
|