packagetest01;importjava.math.BigDecimal;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;//计算类

public classGashaponMachines {private Listprizes;//概率

private static BigDecimal LOTTERY_PROBABILITY_DERIVATIVE = new BigDecimal(0);//商品权重

private longnum;//设置随机数的范围

privateBigDecimal odds;//返回对象

privateMessage message;publicGashaponMachines() {

prizes= new ArrayList();

num= 0;

}public voidaddPrizes(Prize prize) {

prizes.add(prize);//商品的总数 0-500 501-1000 1001-1500

num +=prize.getPrizeNum();

}//获取随机数的范围

publicBigDecimal getOdds() {//随机数范围

odds = new BigDecimal(num).multiply(LOTTERY_PROBABILITY_DERIVATIVE); //设置随机数的范围

System.out.println("随机数的范围为" +odds.longValue());returnodds;

}//获取概率范围

public BigDecimal getlotteryProbabilityDerivative(String lotteryProbability,intscale) {if (scale < 0) {throw new IllegalArgumentException("这个精度必须大于零或者等于零");

}

String total="1";

BigDecimal b1= newBigDecimal(total);

BigDecimal b2= newBigDecimal(lotteryProbability);

LOTTERY_PROBABILITY_DERIVATIVE=b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP);

System.out.println("概率次数为" +LOTTERY_PROBABILITY_DERIVATIVE);returnLOTTERY_PROBABILITY_DERIVATIVE;

}//进行比较

public void takePrize(intrnum) {if (rnum >num) {

System.out.println("随机数大于总得奖品数!没有中奖!!!!!");

}else{//奖品等级区间//寻找随机数掉到什么范围内//pn 奖品等级范围

long pn =num;

Iterator iterator =prizes.iterator();while(iterator.hasNext()) {

Prize p=iterator.next();

pn-=p.getPrizeSum();//范围在递减

if (rnum >pn) {//中奖了

System.out.println("中奖了!!!" +p.getPrizeName());//减少库存

p.setPrizeNum(p.getPrizeNum() - 1);//库存为0 删除奖品

if (p.getPrizeNum() == 0) {

iterator.remove();

System.out.println("抽空了");

System.out.println("剩余奖品:" + num + " 区间:" +odds.longValue());

}return;

}

}

}

}//判断商品库是否为空

public booleanisEmpty() {returnprizes.isEmpty();

}//刷新奖池

publicBigDecimal refresh() {

num= 0;for (int i = 0; i < prizes.size(); i++) {

num+=prizes.get(i).getPrizeSum();

}

odds= newBigDecimal(num).multiply(LOTTERY_PROBABILITY_DERIVATIVE);

System.out.println("随机数的范围是"+odds);returnodds;

}

}

java 大转盘算法_大转盘 算法介绍相关推荐

  1. 数据挖掘经典十大算法_条件熵、信息增益介绍

    数据挖掘经典算法_条件熵.信息增益介绍 一.条件熵 首先与信息熵进行类比,从信息熵的计算公式中我们知道它是考虑到该随机变量的所有可能取值,即所有可能发生事件所带来信息量的期望.由此顾名思义 条件熵的定 ...

  2. 【Matlab】智能优化算法_蜻蜓优化算法DA

    [Matlab]智能优化算法_蜻蜓优化算法DA 1.背景介绍 2.灵感 3.公式推导 3.1 勘探和开发操作 4.算法流程图 5.文件结构 6.伪代码 7.详细代码及注释 7.1 DA.m 7.2 d ...

  3. 【Matlab】智能优化算法_蚁狮优化算法ALO

    [Matlab]智能优化算法_蚁狮优化算法ALO 1.背景介绍 2.基本思想 3.公式推导 3.1 ALO算法的运算符 3.2 蚂蚁的随机游动 3.3 困在蚂蚁坑里 3.4 修建陷阱 3.5 蚂蚁划向 ...

  4. 【Matlab】智能优化算法_灰狼优化算法GWO

    [Matlab]智能优化算法_灰狼优化算法GWO 1.背景介绍 2.基本思想 2.1 等级制度 2.2 狩猎方式 3.公式推导 3.1 社会等级制度 3.2 包围猎物 3.3 包围猎物 3.4 攻击猎 ...

  5. 学大数据要学哪些算法_大数据学习之不得不知的八大算法

    算法一:快速排序法 快速排序是由东尼 · 霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n) 次比较.在最坏状况下则需要Ο(n2) 次比较,但这种状况并不常见. 事实上,快 ...

  6. 学大数据要学哪些算法_大数据专业是学什么?

    01 大数据技术专业属于交叉学科:以统计学.数学.计算机为三大支撑性学科:生物.医学.环境科学.经济学.社会学.管理学为应用拓展性学科.还需要学习数据采集.分析.处理软件,学习数学建模软件及计算机编程 ...

  7. 大数据算法_大数据算法解析,如何创建用户画像实现千人千面?

    " 一面科技,一面生活 技术与社交电商的完美融合 打开了全新的幸福视界 " 幸福蜜糖  2020·11·5 大数据算法无处不在 "处在如今的时代中,数据越来越值钱,如何 ...

  8. snm算法_基于SNM算法的大数据量中文商品清洗方法

    基于 SNM 算法的大数据量中文商品清洗方法 ∗ 张苗苗 苏 勇 [摘 要] 摘 要 SNM 算法即邻近排序算法,是英文数据清洗最常用的算法[ 1 ] . 目前为止,因为中英文语义的差异等一些原因,中 ...

  9. snm算法_基于SNM算法的大数据量中文地址清洗方法-计算机工程与应用.PDF

    基于SNM算法的大数据量中文地址清洗方法-计算机工程与应用 108 2014 ,50(5 ) Computer Engineering and Applications 计算机工程与应用 基于SNM ...

  10. pcy 算法_大数据分析中的PCY算法

    pcy 算法 PCY algorithm was developed by three Chinese scientists Park, Chen, and Yu. This is an algori ...

最新文章

  1. 机器学习与高维信息检索 - Note 4 - 主成分分析及其现代解释(Principal Component Analysis, PCA)及相关实例
  2. Swift 注释规范和文档注释
  3. 【Linux基础】Linux更改系统IP
  4. 设计模式之四:适配器模式(Adapter Pattern)
  5. 【高级绘图】MATLAB应用实战系列(八十)-圣诞前夜,想表白女神?教你如何用MATLAB绘制圣诞树动态图(附MATLAB代码)
  6. 【iOS7一些总结】9、与列表显示(在):列表显示UITableView
  7. ssas ssrs_如何使用SSAS表格模型数据库创建简单的SSRS报告
  8. mysql两表查询单个_对两个表进行单个MySQL选择查询是可能的吗?
  9. 一篇文章读懂开源web引擎Crosswalk
  10. DHCP协议++ClientServer架构
  11. mifi随身wifi选购
  12. 苹果隐私十年史:变与不变(3)产品与常识
  13. chrome官网下载离线安装包
  14. 安卓学习pdf_【手机电脑全平台通用】手把手教你制作可点读日语PDF!
  15. pmp采购管理--合同类型
  16. latex打出 像小写l一样的字母
  17. JavaScript的RSA加密库(cryptico、Node-rsa、Crypto、jsrsasign、JSEncrypt)
  18. 艾宾浩斯曲线真的管用吗?
  19. android的热修复,Android热修复之
  20. 电力-端口映射与才茂DTU通信

热门文章

  1. Ubuntu 中安装 Wine TIM-QQ
  2. 揭开流氓软件背后的始佣者:中国十大流氓网站
  3. Hi3516DV300双目开发板开发环境搭建
  4. 如何通过远程桌面重启计算机?
  5. 动车组在京沪高铁打破铁路最高运营速度纪录
  6. ArcSDE常见问题总结(三)
  7. 用canvas画一个的小画板(PC端移动端都能用)
  8. idea下git和svn切换问题
  9. Calls to static methods in Java interfaces are prohibited in JVM target 1.6. Recompile with '-jvm-ta
  10. 华北电力大学线性系统理论2021考试真题