<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>抽奖 on Java 技术探秘</title>
    <link>https://www.szlinkroutes.com/tags/%E6%8A%BD%E5%A5%96/</link>
    <description>Recent content in 抽奖 on Java 技术探秘</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Thu, 22 Apr 2021 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.szlinkroutes.com/tags/%E6%8A%BD%E5%A5%96/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>java抽奖工具类：按概率抽奖</title>
      <link>https://www.szlinkroutes.com/categories/%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/java%E6%8A%BD%E5%A5%96%E5%B7%A5%E5%85%B7%E7%B1%BB%E6%8C%89%E6%A6%82%E7%8E%87%E6%8A%BD%E5%A5%96/</link>
      <pubDate>Thu, 22 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://www.szlinkroutes.com/categories/%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/java%E6%8A%BD%E5%A5%96%E5%B7%A5%E5%85%B7%E7%B1%BB%E6%8C%89%E6%A6%82%E7%8E%87%E6%8A%BD%E5%A5%96/</guid>
      <description>在一些抽奖活动中，会有按概率抽取奖品的操作，本文将提供一个抽奖概率的解决方案。&#xA;假设抽奖集合如下： 奖品id 概率 1 10% 2 10% 3 20% 4 20% 生成集合 生成的连续集合为{(0.0, 10.0],(10.0, 30.0],(30.0, 60.0]}，如下： 奖品id 区间 1 (0.0, 10.0] 2 (10.0, 20.0] 3 (20.0, 40.0] 4 (40.0, 60.0] 最大的概率值 maxElement = 60.0，这个值下面会用到。&#xA;生成随机数 生成方法为 random.nextDouble() * maxElement，maxElement 就是上一步得到的。&#xA;判断随机数在哪个区间内，返回该区间对应的奖品id 假如 生成了随机数12.001，则它属于(10.0, 20.0]，对应的奖品id为2.&#xA;代码如下：&#xA;LotteryUtil&#xA;public class LotteryUtil { private List&amp;lt;Continuous&amp;gt; lotteryList; private double maxElement; /** * 得到一个抽奖对象 * @param map 抽奖概率，key:奖品id，value:概率 * @param &amp;lt;T&amp;gt; * @return */ public static&amp;lt;T&amp;gt; LotteryUtil getInstance(Map&amp;lt;T, Double&amp;gt; map) { return new LotteryUtil(map); } /** * 构造抽奖集合 * @param map 为奖品的概率 */ private &amp;lt;T&amp;gt; LotteryUtil(Map&amp;lt;T, Double&amp;gt; map) { if(map.</description>
    </item>
  </channel>
</rss>
