import java.util.Arrays;
/**
* @author 小狐狸狗狗(TailsFly)
* @date 2015年2月16日
*
* @说明:2015年国治水区奖励随机生成
*/
public class Demo {
static int level1[]={20,5,2,1,0,0,0};//对应新手场 1 2 5 10 20 50 100元的数量
static int level2[]={0,15,6,2,1,0,0};//对应普通场 1 2 5 10 20 50 100元的数量
static int level3[]={0,0,10,5,5,1,0};//对应豪华场 1 2 5 10 20 50 100元的数量
static int level4[]={0,0,0,10,5,2,1};//对应至尊场 1 2 5 10 20 50 100元的数量
public static void main(String args[]){
init(level1,150);//新手场
init(level2,150);//普通场
init(level3,100);//豪华场
init(level4,100);//至尊场
}
/**
* @param level 当前场次对应1 2 5 10 20 50 100元奖励个数的数组
* @param count 当前场次所对应的最大选号数
*/
public static void init(int level[],int count){//初始化奖励的数量
int num[]=new int[count];//定义数组的数量
Arrays.fill(num, 0);//初始化数组全部为0
int RMB1=level[0];//初始化1元奖励的总数量
int RMB2=level[1];//初始化2元奖励的总数量
int RMB5=level[2];//初始化5元奖励的总数量
int RMB10=level[3];//初始化10元奖励的总数量
int RMB20=level[4];//初始化20元奖励的总数量
int RMB50=level[5];//初始化50元奖励的总数量
int RMB100=level[6];//初始化100元奖励的总数量
for(int i=0;i<count;i++){//把奖励按顺序写到数组中
if(RMB1!=0){
num=1;
RMB1--;
continue;
}
if(RMB2!=0){
num=2;
RMB2--;
continue;
}
if(RMB5!=0){
num=5;
RMB5--;
continue;
}
if(RMB10!=0){
num=10;
RMB10--;
continue;
}
if(RMB20!=0){
num=20;
RMB20--;
continue;
}
if(RMB50!=0){
num=50;
RMB50--;
continue;
}
if(RMB100!=0){
num=100;
RMB100--;
continue;
}
}
random(num);//执行随机打乱算法
}
/**
* @param num 需要打乱的数组
*/
public static void random(int num[]){//进行打乱奖励的算法
int count=1;//当前的号码
for(int i=0;i<num.length;i++){
int a=(int)(Math.random()*num.length);//生成随机数
int b=num[a];//定义一个中间变量存放随机生成编号所对应的奖励
int c=num;//定义一个中间变量存放当前循环编号所对应的奖励
num=b;//使当前循环的编号与随机生成的编号奖励互换
num[a]=c;//使随机生成的编号奖励与当前的编号奖励互换
}
for(int a:num){
System.out.println(count++ + ":" + a+"元");//遍历输出本次随机产生的奖励
}
count=1;//初始化当前号码,方便其他场次统计
}
}