2015年4月18日 星期六

[Java] 產生不重覆的亂數

今天如果需要產生不重覆的亂數,可以用類似玩撲克牌的方式洗牌。

1.先產生所需要的範圍陣列。

2.依序填入數值 (ex: 1 ,2 ,3 ,4 , ...,N)

3.將陣列中每一個值都與位置R互換,R是由亂數產生的,

  亂數範圍由0~陣列長度-1 ,這樣最終可以求得不重覆亂數。

 
package random;

import java.util.Random;

/**
 *
 * @author bert
 */
public class Demo {

    public static void main(String[] args) {

        Demo demo = new Demo();
        int[] poko = demo.DemoRandom();

        for (int i = 0; i < poko.length; i++) {
            System.out.print(poko[i] + ",");
        }
        System.out.println();
    }

    private int[] DemoRandom() {
        int[] poko = new int[52];
        int R = 0;
        Random random = new Random();
        int temp = 0;
        //先產生要的數值出來
        for (int i = 0; i < poko.length; i++) {
            poko[i] = i;
        }

        //洗牌
        for (int i = 0; i < poko.length; i++) {
            //產生亂數
            R = random.nextInt(poko.length);
            temp = poko[i];
            poko[i] = poko[R];
            poko[R] = temp;
        }

        return poko;
    }
}



執行結果

沒有留言:

張貼留言