区间计算法
- 首先比如举一个简单的栗子;
- 现重数据库取出奖品list分别为以下:;
- 1.苹果手机 2.苹果电脑 3.苹果一斤 4.苹果一箱 其获得概率分别为0.0001,0.0002,0.01,0.001;
- 下标分别为0,1,2,3;
- 计算奖品概率总和sum;
- 通过for循环遍历奖品list计算当前概率总和(如第一个就是0.0001,第二个0.0003);
- 用当前概率总和除以总概率,放入list数组中(可保证总概率恒为1);
- 用Math.random()函数生成0到1头尾不含的数字idex放入list中
- 通过Collections.sort(list)排序list,取出idex在数组中的下标,对应选取相同下标的奖品,抽奖结束。
解析:
- 如何保证概率问题?;
通过小数之前的区间大小保证概率,区间越大随机数出现的概率越大