本文博主通过Random模拟微信群红包,指定总额和份数生成一组随机领取数据
public static void main(String[] args) {
int count=100;//红包总金额
int portion=33;//份数
int maxlength=portion;
List<Integer> proportions=new ArrayList<>();
//生成一组随机领取数据存入List集合
for (int i = 0; i < maxlength; i++) {
if(portion == 1){
proportions.add(count);
}else{
//调用获取随机数的方法
int proportion=getProportion(count/portion);
proportions.add(proportion);
//份数递减
portion--;
//总金额递减已领金额
count-=proportion;
}
}
//打乱数据(因为越往后生成数据值越大)
Collections.shuffle(proportions);
int proportionSum=0;
for (int double1 : proportions) {
System.out.println(double1);
proportionSum+=double1;
}
System.out.println(proportionSum);
}
//生成随机数方法
public static int getProportion(int max){
Random random=new Random();
int proportion=random.nextInt(max);
//当生成数值为0时,重新生成
if(proportion==0){
proportion=getProportion(max);
}
return proportion;
}
本文博主采用整数的形式呈现,笔者也可以改为小数使用(PS:注意精确度问题,需了解BigDecimal)