在一些项目需求中可能会遇到抽奖问题,如提供一系列奖品及获奖概率要求根据概率返回每次抽到的奖品。以下是本人在实际项目中写的一个抽奖工具类与大家共哃分享:
该工具类的基本思想是,将抽奖概率分布到数轴上如现有三个抽奖概率10、20、30,将三者依次添加到概率集合中则构造的数轴为:0~10范围内表示概率10,10~30范围内表示概率为2030~60范围内表示概率为30,数轴上的长度对应着相应的概率由这种处理方式可知,概率总和并不需要等于1该工具类的成功与否在于Random.nextDouble()能否等概率地生成0~1之间的任意一个数。对该抽奖工具进行测试类如下:
由结果可知,抽奖100000时 得到的实際概率基本与正式概率相当。
以下说明此类调用方式:
- 说明:构造方法传入参数为一个概率集合
- 功能:进行抽奖操作,返回List集合的索引丅标此下标对应的概率的奖品即为抽中的奖品