JAVA随机生成数,按权重获取对应的奖品名称(真实实战)

这篇博客介绍了如何在Java中实现根据权重随机抽取奖品的功能。通过配置文件读取奖品及其数量,利用Disconf配置管理,避免频繁发布代码。文章提供了代码示例,包括创建实体对象、工具类和测试类,核心算法采用了Arrays.binarySearch()进行区间判断。适用于需要动态调整奖品权重的场景。
摘要由CSDN通过智能技术生成

 背景

公司准备给参加活动的用户进行随机抽取对应的奖品,并根据三种奖品的数量形成各自的权重。考虑到,活动中礼品数量的占比可能会根据活动真实情况发生改变,故将各个奖项的产品数量改成读取配置文件的方式通过disconf配置方式进行配置,避免上线后因为修改礼品数量需要发布生产环境代码。

 

思路:

通过配置文件将奖品统一读取到封装好的RandomDiscountCardConfig实体对象中,并将参数写在springboot的yml文件中。废话不多说先上一部分代码

@Component
@ConfigurationProperties(prefix = "discount")
@Data
public class RandomDiscountCardConfig {
    //实物奖品
    private String bag;
    //视频卡
    private String card;
    //优惠券
    private String coupon;
    //数量
    private int cardTotal;
    private int bagTotal;
    private int couponTotal;
}
接下来是配置yml部分
discount:
  #视频优惠券对应券规则
  card: card
  #实物包优惠券对应券规则
  bag: bag
  #现金优惠券对应券规则
  coupon: disCoupon
  #视频优惠券数量
  cardTotal: 10
  #实物包数量
  bagTotal: 20
  #现金优惠券数量
  couponTotal: 60

然后编写一个DropRandomCouponUtils工具类,可以通过调用静态方法的方式获取想要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值