前段时间做了笔试,觉得很有意思,就记录在这里。题目如下//题目:请写一个红包随机算法。需求是:给定一定的数量和一定的人数,保证每个人都能随机得到一定的数量。//比如一个100元的红包,10个人抢,每人拿一些金额。//约束条件是好运的数量不能超过最大数量的90%,每个人都有一个红包可以抢。//请给出java代码实现,返回每个人分配的金额并打印出来。随机分配法随机法,计算你每次抢到红包本次能拿到的最小数量和最大数量,然后在这个区域取一个随机值,计算你这次抢红包的数量。这种方法,优点是实现简单。不过,先抢到的人会赚大钱,抢到大红包的概率很高,后来的人就更吃亏了。publicclassRedEnvelopMain{//幸运获得的红包数量,最大数量/总数量,比例publicstaticfinaldoubleBEST_LUCK_PERCENT=0.9;//单人每次最小抢取金额,默认1分publicstaticfinaldoubleONE_PERSON_MIN_DRAW_AMOUNT=1;/***红包开启方式*红包金额分配算法**@paramtotalAmount红包总金额*@parampersonNum红包总人数*/publicvoidredEnvelopLuckyDraw(doubletotalAmount,intpersonNum){if(totalAmount<=0||personNum<1){System.out.println("非法输入参数,请检查");返回;}//红包总量>=分配人数*每人最低中奖金额中奖人数*单次中奖金额),请查看红包金额和发放人数”);返回;}doubleminDrawAmount=ONE_PERSON_MIN_DRAW_AMOUNT;doublemaxDrawAmount=totalAmount*BEST_LUCK_PERCENT;双drawLuckAmount=0;for(Integeri=0;i
