zoukankan      html  css  js  c++  java
  • 一种抽奖转盘算法

    基本思路,概率总和不需要为100%,首先先算出所有的概率总和,然后随机一个值在
    0到总和之间,计算这个值落入的区间是在哪个位置。这种算法较为平均。
    public static Integer duageAward(List<Double> turntables){
        Double sumPbi = 0.0;
        for (Double n: turntables){
            sumPbi += n;
        }
    
        Integer turntableId = null;
        Double rsel = RandomUtils.nextDouble(0,sumPbi);
        for (int i = 0;i < turntables.size();i++){
            if (turntables.get(i).compareTo(rsel)<0){
                rsel = rsel - turntables.get(i);
            }else{
                turntableId = i;
                break;
            }
        }
        return turntableId;
    }
    
    public static void main(String[] args) {
        List<Double> nums = new ArrayList<>();
        nums.add(10.1);
        nums.add(20.3);
        nums.add(99.92);
        nums.add(87.80);
        nums.add(99.90);
        nums.add(99.91);
        int []arr=new int[6];
        for (Long i = 0L;i<100000000L;i++){
            int idx = duageAward(nums);
            arr[idx] = arr[idx] + 1;
        }
    }
    

      

  • 相关阅读:
    JS基础语法
    JS的初步了解
    CSS初步学习
    HTML标签
    初步了解HTML
    LEGB规则
    Python面试题练习
    闭包
    Caché,Cache数据库连接并查询数据
    Caché,Cache数据库下载
  • 原文地址:https://www.cnblogs.com/forbeat/p/13055869.html
Copyright © 2011-2022 走看看