大转盘抽奖逻辑--区间
部分原文自: https://blog.csdn.net/larva_s/article/details/87532195 1. 抽奖需求 根据配置奖品的概率去抽取奖品,其中总概率不一定是 1 ,此时是按照权重去抽取奖品的。 2. 实现 2.1 思路:区间 区间 [0, 10):奖品1 [10, 65):谢谢参与 [65, 98):奖品2 [98, 100):奖品3 概率 奖品1概率:10 谢谢参与概率:55 奖品2概率:33 奖品3概率:2 根据奖品概率构造一个区间 通过随机数Rondom的API获取随机值 [0, 最大值) 根据随机值匹配到对应区间的奖品,即是抽取到的奖品 /** * 奖品类 */ @Data @AllArgsConstructor public class Award { private Integer id; private String name; private Integer weight; } /** * 通用抽奖接口 * @param <T> */ public interface ILotteryService<T> { T draw(List<T> awardList) throws DrawException; } /** * 区间实现抽奖概率 */ public class IntervalLotteryService