原理如下:
1首先初始化一個待抽獎的數(shù)組nums,數(shù)組的長度k
2. 隨機一個1-k之間的隨機數(shù),得到nums【k】,這樣得到第一個抽獎號,nums中剔除該號碼,k--。
3. 重復步驟2,直到得到全部中獎號碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
class myLuck { private int mTarget; List<Integer> mNums = new ArrayList<Integer>(); //搖獎池 ///從多少個數(shù)中產(chǎn)生多少個數(shù) ///例如 33選6 則Source=33,Target=6; myLuck( int vSource, int vTarget) { for ( int i = 1 ; i <=vSource ; i++) { mNums.add(i); } mTarget=vTarget; } public String GetNums() { String xString= "" ; for ( int i = 0 ;i<mTarget; i++) { int _index=( int )(Math.random()* mNums.size()); xString+=mNums.get(_index)+ " " ; //System.out.print("("+(_index+1)+")"+mNums.get(_index)+"-"); //如何刪除一個元素 mNums.remove(_index); } return xString; } } |
調用方式如下:
1
2
3
|
myLuck _red= new myLuck( 33 , 6 ); myLuck _blue= new myLuck( 16 , 1 ); String Str =_red.GetNums() + "," +_blue.GetNums(); |
很簡單,將結果輸出即可~
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.cnblogs.com/jsxu/p/6932829.html