public class MyTest {
/**
*
* @param total 流量总数
* @param num 人数
* @param min 每人最小流量数
* @param redpacket 统计数组
*/
public static void deal(int total,int num,int min,int []redpacket){
double max;
int flow;
int tempTotal;
if(min * num>total) {System.out.print("输入数据有误");return;}
for(int i=num;i>0;i--){
if(i==1){
redpacket[num-i]+=total;
System.out.println("第"+(num-i+1)+"个人得到"+total+"红包; "+"剩余:"+0);
break;
}
max=1.0*total/i*2;
flow = (int)Math.round((Math.random()*max));
flow=flow<min?min:flow;
tempTotal=total;
total = total - flow;
if(total<(i-1)*min){
flow=tempTotal-(i-1)*min;
total = (i-1)*min;
}
System.out.println("第"+(num-i+1)+"个人得到"+flow+"红包; "+"剩余:"+total);
redpacket[num-i]+=flow;
}
}
public static void main(String args[]){
int []redpacket = new int[100];//统计数组
int cycle=100; //循环次数
int total=100; //流量总数
int num = 5; //人数(不要超过100)
int min = 1; //最小流量数
for(int i=0;i<num;i++) redpacket[i]=0;
for(int i=0;i<cycle;i++)
{
deal(total,num,min,redpacket);
}
for(int i=0;i<num;i++){
System.out.println(redpacket[i]);
}
}
}