记得上下班打卡 | git大法好,push需谨慎

Commit c7be1e63 authored by jiangxiulong's avatar jiangxiulong

随机数算法

parent 4d362b3e
...@@ -444,7 +444,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg ...@@ -444,7 +444,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
/** /**
* 抽奖方法 计算中哪个奖池的奖品 * 抽奖方法 计算中哪个奖池的奖品
*/ */
private boolean lotteryDraw(String integralActivityId, String uid) { /*private boolean lotteryDraw(String integralActivityId, String uid) {
// 随机数 // 随机数
double random = Math.random() * 100; double random = Math.random() * 100;
BigDecimal randomBig = BigDecimal.valueOf(random); BigDecimal randomBig = BigDecimal.valueOf(random);
...@@ -474,6 +474,40 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg ...@@ -474,6 +474,40 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
} else { } else {
return false; return false;
} }
}*/
/**
* 抽奖方法 计算中哪个奖池的奖品
*/
private boolean lotteryDraw(String integralActivityId, String uid) {
int estimatedNum = redisDataUtils.getIntegralActivityEstimatedNum(integralActivityId);
if (estimatedNum <= 0) { // 此时百分百中实物
return true;
}
// 剩余总库存 添加编辑的时候冗余的总库存省去计算
int prizeNum = redisDataUtils.getIntegralActivityTotalPrizeNum(integralActivityId);
BigDecimal prizeNumBig = BigDecimal.valueOf(prizeNum);
// 概率
BigDecimal estimatedNumBig = BigDecimal.valueOf(estimatedNum);
// 会员概率*2
try {
ResponseDto<Boolean> isMemberDto = feignAdamBaseClient.isMember(uid);
Boolean isMember = isMemberDto.getData();
if (isMember) {
estimatedNumBig = estimatedNumBig.divide(BigDecimal.valueOf(2), 2, BigDecimal.ROUND_HALF_UP);
}
} catch (Exception e) {
log.error("获取用户是否是会员失败 [uid:{}, e:{}]", uid, e);
}
// 随机数
double random = Math.random();
BigDecimal randomBig = BigDecimal.valueOf(random);
BigDecimal randomBigNew = randomBig.multiply(estimatedNumBig);
// 对比大小
if (randomBigNew.compareTo(prizeNumBig) <= 0) {
return true; // 0 - 剩余预估人数的随机数 <= 实物剩余总库存 中实物
} else {
return false;
}
} }
/*public static void main(String[] args) { /*public static void main(String[] args) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment