<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
根據概率將獎品劃分割區間,每個區間代表一個獎品,然後抽取 亂數,反查落在那個區間上,即為所抽取的獎品。
import com.alibaba.fastjson.JSONObject; import java.math.BigDecimal; import java.util.*; //抽獎核心演演算法 public class Arithmetic { // 放大倍數 private static final int mulriple = 1000000; public static int pay(List<Prize> prizes) { int lastScope = 0; // 洗牌,打亂獎品次序 Collections.shuffle(prizes); Map prizeScopes = new HashMap(); Map prizeQuantity = new HashMap(); for (Prize prize : prizes) { int prizeId = prize.getPrizeId(); // 劃分割區間 int currentScope = lastScope + prize.getProbability().multiply(new BigDecimal(mulriple)).intValue(); prizeScopes.put(prizeId, new int[]{lastScope + 1, currentScope}); prizeQuantity.put(prizeId, prize.getQuantity()); lastScope = currentScope; } // 獲取1-1000000之間的一個亂數 int luckyNumber = new Random().nextInt(mulriple); int luckyPrizeId = 0; // 查詢亂數所在的區間 if ((null != prizeScopes) && !prizeScopes.isEmpty()) { Set set = prizeScopes.entrySet(); for (Object o : set) { Map.Entry m = (Map.Entry) o; int key = (int) m.getKey(); Object value = m.getValue(); Integer[] val = JSONObject.parseObject(JSONObject.toJSONString(value), Integer[].class); if (luckyNumber >= val[0] && luckyNumber <=val[1] && Integer.parseInt(prizeQuantity.get(key)+"") > 0) { luckyPrizeId = key; break; } } } // if (luckyPrizeId > 0) { // // 獎品庫存減一 // } return luckyPrizeId; } public static void main(String[] args) { List<Prize> prizes = new ArrayList(); Prize prize1 = new Prize(); prize1.setPrizeId(10000); prize1.setProbability(new BigDecimal(0.01)); prize1.setQuantity(1); prizes.add(prize1); Prize prize2 = new Prize(); prize2.setPrizeId(10001); prize2.setProbability(new BigDecimal(0.19)); prize2.setQuantity(10); prizes.add(prize2); Prize prize3 = new Prize(); prize3.setPrizeId(10); prize3.setProbability(new BigDecimal(0.8)); prize3.setQuantity(1); prizes.add(prize3); int times = 1000; int prize1GetTimes = 0; int prize2GetTimes = 0; int prize3GetTimes = 0; for (int i = 0; i < times; i++) { int pay = pay(prizes); System.out.println("抽獎到了"+pay); switch (pay) { case 10000: prize1GetTimes++; break; case 10001: prize2GetTimes++; break; case 10: prize3GetTimes++; break; } } System.out.println("抽獎次數" + times); System.out.println("prize1中獎次數" + prize1GetTimes); System.out.println("prize2中獎次數" + prize2GetTimes); System.out.println("prize3中獎次數" + prize3GetTimes); } }
import lombok.Data; import java.math.BigDecimal; @Data public class Prize { //獎品唯一標示 private Integer prizeId; //中獎概率 private BigDecimal probability; //獎品數量 private Integer quantity; }
執行結果如下:
通過1000次抽取,我們看出演演算法精度還是很高的。
到此這篇關於利用java實現中獎概率詳情的文章就介紹到這了,更多相關java中獎概率內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45