洗牌算法是我们常见的随机问题,在玩游戏、随机排序时经常会碰到,一个最常用的地方就是组卷。它可以抽象成这样:M以内的所有自然数的随机顺序数组。
package com.math; import java.util.Random; /** * @author summer * */ public class Shuffle { static final int[] a = new int[54]; static Random rnd = new Random(); static{ for(int i=1;i<55;i++) a[i-1] = i; } static void swap(int[] arr,int i,int j){ int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } public static void shuffle(){ for (int i=a.length; i>1; i--) swap(a, i-1, rnd.nextInt(i)); } public static void main(String[]args){ shuffle(); for(int i:a){ System.out.println(i); } } }
简单的实现一下,有什么问题大家来指正。
版权声明:本文为博主原创文章,未经博主允许不得转载。