时间:2021-05-20
本文实例为大家分享了java抽奖算法,供大家参考,具体内容如下
1. 算法分析
根据概率将奖品划分区间,每个区间代表一个奖品,然后抽取随机数,反查落在那个区间上,即为所抽取的奖品。
2. 代码
核心算法
Prize bean
3. 测试
prize1概率: 5%
prize2概率: 10%
prize3概率: 15%
prize4概率: 20%
prize5概率: 50%
public class Test { public static void main(String[] args) { List<Prize> prizes = new ArrayList<Prize>(); Prize prize1 = new Prize(); prize1.setPrizeId(1); prize1.setProbability(new BigDecimal(0.05)); prize1.setQuantity(1); prizes.add(prize1); Prize prize2 = new Prize(); prize2.setPrizeId(2); prize2.setProbability(new BigDecimal(0.10)); prize2.setQuantity(10); prizes.add(prize2); Prize prize3 = new Prize(); prize3.setPrizeId(3); prize3.setProbability(new BigDecimal(0.15)); prize3.setQuantity(20); prizes.add(prize3); Prize prize4 = new Prize(); prize4.setPrizeId(4); prize4.setProbability(new BigDecimal(0.20)); prize4.setQuantity(50); prizes.add(prize4); Prize prize5 = new Prize(); prize5.setPrizeId(5); prize5.setProbability(new BigDecimal(0.50)); prize5.setQuantity(200); prizes.add(prize5); int prize1GetTimes = 0; int prize2GetTimes = 0; int prize3GetTimes = 0; int prize4GetTimes = 0; int prize5GetTimes = 0; Arithmetic arithmetic = new Arithmetic(); int times = 1000; for (int i = 0; i < times; i++) { int prizeId = arithmetic.pay(prizes); switch (prizeId) { case 1: prize1GetTimes++; break; case 2: prize2GetTimes++; break; case 3: prize3GetTimes++; break; case 4: prize4GetTimes++; break; case 5: prize5GetTimes++; break; } } System.out.println("抽奖次数" + times); System.out.println("prize1中奖次数" + prize1GetTimes); System.out.println("prize2中奖次数" + prize2GetTimes); System.out.println("prize3中奖次数" + prize3GetTimes); System.out.println("prize4中奖次数" + prize4GetTimes); System.out.println("prize5中奖次数" + prize5GetTimes); }}结果:
通过1000次抽取,我们看出算法精度还是很高的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
常用抽奖算法对比基础的游戏抽奖算法通常要求实现在指定奖品的集合中,每个奖品根据对对应概率进行抽取。个人了解的主要有以下几中抽奖算法:随机数一一对应算法思想这种算
天猫商城消費信用额度抽奖活动能够根据二种方法设定,如今就为大伙儿详细介绍爱开淘网站掌握到的二种方法。第一种是做为直播间奖赏来设定,第二种是做为一般抽奖活动礼品来
一.BF算法BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字
本文实例讲述了java实现sha算法的方法。分享给大家供大家参考,具体如下:一简介安全散列算法固定长度摘要信息二sha算法sha-1、sha-2(sha-224
借助Java语言,运用递归算法计算整数N的二进制表示中1的个数/*usetherecursivealgorithmetocalculate*thenumbero