Java 抽奖概率算法 10C

比如抽奖活动:抽到的概率分别为:
鞋子:3%,袜子:1.5%,裤子:10%,羽绒服:4.5%,
这四个奖品总的概率加起来不等于100%,如何计算提供一下思路

4个回答

用随机数函数随机生成1~1000的数,
然后看生成的数在哪个区间对应:
1~30鞋子
31~45袜子
46~146裤子
........
以此类推

qq_37296877
qq_37296877 正解
3 年多之前 回复

搜随机数函数,然后鞋子:3%,袜子:1.5%,裤子:10%,羽绒服:4.5%,空:%81.
运用随机数函数进行随机就好了啊。

我这边来谈谈我的解决思路:
如果暗战现在的模式,我们可以将占比转换为整数。
那么思路是不是开阔了很多,抽奖不来就是一个随机事件,那我们可以采用随机数的形式进行解决。
我们在 0-999之间
随机 三十个数 作为是鞋子

随机 15个作为袜子
随机 100个作为裤子
随机 45个作为 羽绒服
其他情况为为为中奖。
想采用哪种数据结构存储,都可以解决这个问题。

                rate = rate/100;
                rate1 = rate1/100;
                TreeMap<Integer, Double> map = new TreeMap<Integer, Double>();
                map.put(5, rate);//商品Id,//中奖率
                map.put(4, rate1);//商品Id,//中奖率
                map.put(0, 1-rate-rate1);//0不是商品,//不中奖率
                List<Double> list = new ArrayList<Double>(map.values());
                List<Integer> gifts = new ArrayList<Integer>(map.keySet());
                AliasMethod method = new AliasMethod(list);
                int index = method.next();
                Integer keyNum = gifts.get(index);//获得中奖商品Id
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐