原理如下:
1首先初始化一个待抽奖的数组nums,数组的长度k
2. 随机一个1-k之间的随机数,得到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>(); //摇奖池
///从多少个数中产生多少个数
///例如 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();
|
很简单,将结果输出即可~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/jsxu/p/6932829.html