簡體   English   中英

如何在Java上生成隨機唯一數

[英]How to generate random unique numbers on java

我是Java的新手,我正嘗試將游戲的非重復數字隨機化。 僅當我不添加break語句時,我的代碼才會生成從1到75的唯一隨機數(我必須這樣做才能同時獲得一個數字)。 我該怎么辦? 編輯-(我想知道它是否保持重置的原因是因為我多次調用該方法嗎?我不太確定如何解決該問題)

public static void genNumber() {
    Random random = new Random();

   int num;
    String u; 
    String letter = "";
    HashSet<Integer> used = new HashSet<>(75);
        for (int i = 1; i <= 75; i++){
            ball.add(i);
        }

   while(used.size() > 0) {

    num = 1 + random.nextInt(75);

        if (used.contains(num)){
            used.remove(new Integer(num));


        u = Integer.toString(num); 
        System.out.print(u + "\n");
break; 

        }
        if (!used.contains(num)){
            continue;
        }
       }

這些數字是唯一且隨機的,但我一次只想要一個數字(不重復),而不是一次全部75。

也許每當您想要一個新的隨機序列(如一副紙牌)時,就對列表進行洗牌。 每個元素都保證是唯一的。

List<Integer> balls = new ArrayList<>();

for (int i = 1; i <= 75; ++i) {
    balls.add(i);
}

for (;;) {
    // Shuffle the list every 75 draws:

    Collections.shuffle(balls);
    System.out.println(Arrays.toString(balls.toArray()));

    // Consume the sequence

    for (Integer ball : balls) {
        take(ball);
    }
}

我將創建一個由75個元素組成的布爾值數組,並將所有值設置為true。 創建一個生成一個隨機數的方法,並將該布爾數組的值更新為false。 每次生成數字時,請檢查數組以查看該值是否設置為true。 然后,您可以一次生成一個數字,而不必擔心重復。 您可以有一個while循環,要求用戶輸入yes或no,如果用戶回答no,則不會調用您的方法並將while循環條件設置為false。 如果他們回答“是”,則它會調用方法並保持循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM