[英]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.