导航

转载的抢红包算法

Posted on 2020-01-16 16:33  柚子!  阅读(134)  评论(0)    收藏  举报
import java.util.Arrays;
import java.util.Random;

public class Xiediansha {
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;
}

}