JAVA 生成随机数并根据后台概率灵活生成的实例代码
最近碰到一个大转盘的业务,奖品可根据数据后台灵活设置中奖概率,看起来挺简单的业务功能,但实现起来对我这个毫无经验的人来说并不容易,后面又碰到一个根据后台概率随机获取不同概率的档位积分,前面是两个实际中业务要用到的话不多说吧,直接上我写概率工具类吧。
1:第一种方法
/** *根据概率获取随机积分 * *@paramrdm *@return */ //这里的参数是一个存储概率集合当然你也可以用数组 publicstaticIntegerrandomPoints(ArrayListrdm){ ArrayList cdm=rdm; //这里是将概率集合重组比如0.20.30.10.4四个数据的集合 for(inti=1;i 2:第二种方法
这个是网上找到的原理也是一样不过这里用法比较固定,但效率明显比第一个更高
publicclassMathRandom { /** *0出现的概率为%50 */ publicstaticdoublerate0=0.50; /** *1出现的概率为%20 */ publicstaticdoublerate1=0.20; /** *2出现的概率为%15 */ publicstaticdoublerate2=0.15; /** *3出现的概率为%10 */ publicstaticdoublerate3=0.10; /** *4出现的概率为%4 */ publicstaticdoublerate4=0.04; /** *5出现的概率为%1 */ publicstaticdoublerate5=0.01; /** *Math.random()产生一个double型的随机数,判断一下 *例如0出现的概率为%50,则介于0到0.50中间的返回0 *@returnint * */ privateintPercentageRandom() { doublerandomNumber; randomNumber=Math.random(); if(randomNumber>=0&&randomNumber<=rate0) { return0; } elseif(randomNumber>=rate0&&randomNumber<=rate0+rate1) { return1; } elseif(randomNumber>=rate0+rate1 &&randomNumber<=rate0+rate1+rate2) { return2; } elseif(randomNumber>=rate0+rate1+rate2 &&randomNumber<=rate0+rate1+rate2+rate3) { return3; } elseif(randomNumber>=rate0+rate1+rate2+rate3 &&randomNumber<=rate0+rate1+rate2+rate3+rate4) { return4; } elseif(randomNumber>=rate0+rate1+rate2+rate3+rate4 &&randomNumber<=rate0+rate1+rate2+rate3+rate4 +rate5) { return5; } return-1; } }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。