1. 程式人生 > >JAVA生成6個1-8的隨機數,要求無重複。

JAVA生成6個1-8的隨機數,要求無重複。

[演算法題:生成不重複的隨機數]生成6個1-8的隨機數,要求無重複。先用陣列儲存隨機數,然後判斷是否重複,如果重複重新生成。
方案一:

import java.util.Random;

public class Cai {
    public static void main(String[] args) {
        Random ran = new Random();
        int[] arr = new int[6];
        for(int i=0;i<arr.length;i++){ //生成6個無重複的隨機數
            arr[i] = ran.nextInt(33
)+1; for(int j=0;j<i;j++){ if(arr[i] == arr[j]){ //和前面的重複了 i--; // 如果重複了,先 -- 後 ++ 相當於下標不向前移動 break; } } } for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); } } }

方案二:

import java.util.Random;

public class Cai {
    public static void main(String[] args) {
        int[] tmp = new int[8];
        for(int i=0;i<tmp.length;i++){
            tmp[i] = i+1;
        } // tmp裡面放了1 - 8 
        int[] arr = new int[6];
        for(int i=0;i<arr.length;i++){
            int
index = ran.nextInt(tmp.length-i); // arr[i] = tmp[index]; //隨機下標 tmp[index] = tmp[tmp.length-1-i]; // } for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); } } }

方案三:
JAVA程式設計師推薦方法:

import java.util.Random;
import java.util.HashSet; //集合,自動過濾重複元素

public class Cai {
    public static void main(String[] args) {
        Random ran = new Random();
        HashSet hs = new HashSet();
        for(;;){
            int tmp = ran.nextInt(8)+1;
            hs.add(tmp);
            if(hs.size() == 6) break;
        }
        System.out.println(hs);
    }
}