保证两个条件
- 每份红包最低金额为1分
- 总份数加起来等于总金额
public class MoneyTest {
public static void main(String[] args) {
double money = 10;
int num = 6;
System.out.println("总金额:"+ money +"元\t 拆分红包总个数:" + num);
int[] array = divived(money,num);
System.out.println("拆分后的各个红包金额数如下:");
for (int i:array){
System.out.print((double) i/100+"元\t");
}
}
/** 模拟抢红包
* param money
* @param n
* @return
*/
public static int[] divived(double money, int n){
int fen = (int) (money*100);
if(fen < n || fen < 1){
throw new IllegalArgumentException("被拆分的总金额不能小于1分");
}
int[] array = new int[n];
Arrays.fill(array,1);
fen -= n;
int i = 0;
Random random = new Random();
while (fen > 1){
int f = random.nextInt(fen);
array[i++%n] += f;
fen -= f;
}
if (fen > 0){
array[0] += fen;
}
return array;
}
}