1. 程式人生 > 實用技巧 >洗牌演算法

洗牌演算法

package shuffle;

import java.util.Arrays;
import java.util.Random;

/**
 * @Auther: zourong
 * @Date: 2020/12/30 12:15
 * @Description: 亂序(洗牌)演算法
 */
public class ShuffleAlgorithm {
    public static void main(String[] args) {
        int[] a={1,2,3,4,5,6,7,8};
        shuffleMethod(a);
        System.out.println(Arrays.toString(a));
    }

    
private static void shuffleMethod(int[] a) { Random random = new Random();
     int t; for (int i = a.length - 1; i >0 ; i--) { //取出(t<i && t>=0)隨機的一個下標t。 t=random.nextInt(i); //交換位置,第一個選出來的放到最後一個位置,第二個選出來的放到倒數第二個位置,以此類推。 int x=a[t]; a[t]
=a[i]; a[i]=x; } } }

以上演算法可以保證每個元素必定不在原先的位置。

下面記錄一個草稿,提醒自己儘可能的簡化程式碼

--------------------------------------------------------------------