簡體   English   中英

Java從數字間隔生成隨機唯一數字

[英]Java generating random unique numbers from an interval of numbers

我想從一個間隔中生成隨機的唯一整數,但應用程序凍結(無限循環)。

int[] ids = new int[200];
for(int i = 0; i < ids.length; i++){
   int temp = getUnique(ids);
   ids[i] = temp;
}

private int getUnique(int[] ids){
   while(true){
      int iRand = random(0, ids.length);
      if( unique( ids, iRand ) ) return iRand;
   }
}

private boolean unique(int[] arr, int i){
    for(int k : arr){
        if(k == i) return false;
    }

    return true;
}

private int random(int Min, int Max){
   return Min + (int)(Math.random() * ((Max - Min) + 1));
}

我想要一個0到200之間的整數數組,隨機排序。 我不知道為什么,但是應用程序凍結了。 為什么? 問題出在哪兒?

考慮使用Collections.shuffle(...)將列表隨機化。

例如:

Integer[] ids = getArrayOfNumbers();
List<Integer> idList = Arrays.asList(ids);
Collections.shuffle(idList);
ids = idList.toArray(ids);

我建議您將要排序的數字插入該數組中,然后對其進行隨機排序,因為會生成一個隨機數,然后檢查其是否唯一可能會花費很長時間。

暫無
暫無

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

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