java概率随机_java简单的抽奖方法——配置概率(100以内随机数的一个解决方案)...

用户抽奖的大致思路就是,当用户点击抽奖后,后台随机算出100以内的一个随机数,然后查看该随机数是否在中奖概率范围内。

抽奖概率写死的方法:/**

* 抽奖概率

*

* @return rand

*/

public static int randomInt() {

int randomNum = new Random().nextInt(100) + 1;

if (randomNum == 1) {

return 1;

} else if (randomNum >= 2 && randomNum <= 5) {

return 2;

} else if (randomNum >= 6 && randomNum <= 10) {

return 3;

} else if (randomNum >= 11 && randomNum <= 50) {

return 4;

} else {

return 5;

}

}

从数据库读取概率配置(本次抽奖分五等奖)public static int randomInt(LotteryPrizeEntry lotteryPrize) {

//概率不能为空,至少为0

if (lotteryPrize.getFirstPrize() + lotteryPrize.getSecondPrize()

+ lotteryPrize.getThirdPrize() + lotteryPrize.getFourthPrize() + lotteryPrize.getFifthPrize() > 100) {

return 0;

}

int randomNum = new Random().nextInt(100) + 1;

List list = new ArrayList();

list.add(lotteryPrize.getFirstPrize());

list.add(lotteryPrize.getSecondPrize());

list.add(lotteryPrize.getThirdPrize());

list.add(lotteryPrize.getFourthPrize());

list.add(lotteryPrize.getFifthPrize());

int prize = 1; //奖品级数

int num = 0; //存中奖概率数

int num2 = 1;//存中奖概率数

for (Integer i : list) {

num = +i;

if (i >= 1) {

if (randomNum >= num2 && randomNum <= num) {

return prize;

}

}

prize++; //奖级加一

num2 = +i;

}

return prize;中奖概率配置表:

BEGIN_TIME        DATE                开始时间

END_TIME         DATE                结束时间

LOTTERY_ISENABLE        NUMBER                 是否开启 0关闭1开启

FIRST_PRIZE        NUMBER                一等奖概率

SECOND_PRIZE         NUMBER                 二等奖概率

THIRD_PRIZE         NUMBER                三等奖概率

FOURTH_PRIZE         NUMBER                 四等奖概率

FIFTH_PRIZE         NUMBER                 五等奖概率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值