Java云架构
不可错过的 Java 技术公众号
程序中经常遇到随机送红包之类的情景,这个随机还得指定概率,比如10%的机率可以得到红包。那么java怎么实现一个简单的概率计算了,见如下例子:
使用commons-lang3的工具类RandomUtils实现
如果要在某个数字区间产生一个随机数,区间内部在不同的片段几率不同如何实现呢?经常有这样的场景,比如,随机赠送红包,范围0.1元-100元,0.1-1元的概率是90%,1元-10元的概率是9%,10元-100元的概率是1%,也就是说数额越大得到的几率越小!实现的原理如下图:
原理就是,将范围分割成一个个子范围(片段),具体采用哪个范围,再用机率判断。片段机率可以按照升序排好,映射成[1,100]之间的数字。然后随机一个[1,100]之间的数,该数落在哪个区间,就采用哪个片段产生随机数。具体源代码如下:
源码获取:
https://github.com/simonqa/
领取专属 10元无门槛券
私享最新 技术干货