商店的規模50
數組random
你的50名隨機數的候選人保持初始設置爲random.length
。所以一個櫃檯,這裏counter
將被初始化爲49.
然後從0
生成一個數字r
到counter-1
並選擇random[r]
作爲您的號碼。
現在繼續並使用random[counter-1]
替換random[r]
。遞減counter
,以便下次只搜索數組的前49個元素,並在您選擇數字時繼續此過程。
現在只是如果你想,你以前沒有選擇一個數字,從0
到counter-1
使random[r]
來自陣列,這將是在年初的獨特元素產生r
。
int[] randoms= new int[50];
.
. //populate your array with the candidate numbers
.
int counter= randoms.length;
Random rand = new Random();
public int getUnique(){
//Get a random number in the range 0 to counter-1
int r = rand.nextInt(counter);
int myElement = randoms[r];
randoms[r] = randoms[counter-1];
randoms[counter-1]= myElement;
counter--;
return myElement;
}
,只要你想,以允許重複,產生從0
的r
到random.length -1
並選擇random[r]
爲你的電話號碼。請注意,我們還是要保持跟蹤所用的數字,使getUnique()
仍然有效:
public int getAny(){
//Get a random number in the range 0 to random.length-1
int r = rand.nextInt(random.length);
int myElement = randoms[r];
if(r < counter){
randoms[r] = randoms[counter-1];
randoms[counter-1]= myElement;
counter--;
}
return myElement;
}
來源
2012-12-26 20:28:53
AFS
我會在紙上繪製邏輯。你可以使用if-then邏輯,但我認爲有很多方法可以爲這個貓皮膚 – Coffee
如果你使用'List'而不是數組,你可以利用[contains()](http://docs.oracle.com)。 com/javase/6/docs/api/java/util/List.html#包含%28java.lang.Object%29)方法。 –