纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

随机红包算法(java)

10月6日 六壬会投稿
  随机红包算法,每个人都有自己的实现思路。packagecom。jmmq。load。jim。importjava。math。BigDimportjava。util。Aimportjava。util。Limportjava。util。R红包算法publicclassRedPacketPrc{privatestaticfinalBigDecimalMINnewBigDecimal(0。01);publicstaticvoidmain(String〔〕args){String〔〕rsredPacketRandom(newBigDecimal(1),100,false);BigDecimalsumBigDecimal。ZERO;for(Stringstr:rs){System。out。println(str);sumsum。add(newBigDecimal(str));}System。out。println(sum:sum);System。out。println((。。。。)()(。。。。)()(。。。。)());String〔〕resredPacketOpen(newBigDecimal(20),6,false);BigDecimalsum2BigDecimal。ZERO;for(Stringstr:res){System。out。println(str);sum2sum2。add(newBigDecimal(str));}System。out。println(sum2:sum2);}paramfaceValue面值单位:元paramamount人数paramavgFlag是否平均return平均分就不写了思路一:按百分比进行随机计算,最后一个进行匝差计算publicstaticString〔〕redPacketRandom(BigDecimalfaceValue,intamount,booleanavgFlag){先计算平均数四舍五入BigDecimalperValuefaceValue。pide(newBigDecimal(amount),3,BigDecimal。ROUNDHALFUP);平均下来最小的红包必须大于等于1分钱if(perValue。compareTo(MIN)1){thrownewRuntimeException(redpacketamountOutOfBoundsmin0。01);}String〔〕rsnewString〔amount〕;平均if(avgFlag){这里四舍五入重新计算perValuefaceValue。pide(newBigDecimal(amount),2,BigDecimal。ROUNDHALFUP);Arrays。fill(rs,perValue。toString());无法除尽if(perValue。multiply(newBigDecimal(amount))。compareTo(faceValue)!0){随机获取一个下标intindexnewRandom()。nextInt(amount);rs〔index〕String。valueOf(newBigDecimal(rs〔index〕)。add(faceValue。subtract(perValue。multiply(newBigDecimal(amount)))));}}BigDecimalweightSumBigDecimal。ZERO;BigDecimalredSumBigDecimal。ZERO;BigDecimal〔〕weightsnewBigDecimal〔amount〕;随机for(inti0;irs。i){BigDecimalseednewBigDecimal(newRandom()。nextInt(amount));weightSumweightSum。add(seed);weights〔i〕循环最后一个后计算金额if(irs。length1){for(intj0;jrs。j){修改为向下取值,这样差额永远都是正数就不存在吃不掉差额的问题了BigDecimalvalfaceValue。multiply(weights〔j〕。pide(weightSum,2,BigDecimal。ROUNDHALFUP));if(val。compareTo(MIN)1){valMIN;}redSumredSum。add(val);rs〔j〕val。toString();}}}BigDecimaldifffaceValue。subtract(redSum);if(faceValue。compareTo(redSum)!0){找到第一个加上或减少diff大于MIN的元素修改金额for(inti0;irs。i){if(newBigDecimal(rs〔i〕)。add(diff)。compareTo(MIN)1){rs〔i〕newBigDecimal(rs〔i〕)。add(diff)。toString();}}}若没有任何一个元素能吃掉差额,因此差额需要进行分摊了,这里简单粗暴的将循环到大于MIN的都改为MIN同时减少差额这里代码不进行优化,会写另外一个优化的算法if(faceValue。compareTo(redSum)!0){for(inti0;irs。i){if(newBigDecimal(rs〔i〕)。compareTo(MIN)0){if(newBigDecimal(rs〔i〕)。add(diff)。compareTo(MIN)1){rs〔i〕newBigDecimal(rs〔i〕)。add(diff)。toString();}else{diff。add(newBigDecimal(rs〔i〕))。subtract(MIN);rs〔i〕MIN。toString();}}}}}上面算法进行优化paramfaceValue面值单位:元paramamount人数paramavgFlag是否平均return优化思路:上面算法为了保证红包最小金额处理上花费了大量的循环来处理优化上就直接先分配最小金额,然后在进行随机分摊剩余的钱publicstaticString〔〕redPacketOpen(BigDecimalfaceValue,intamount,booleanavgFlag){先计算平均数四舍五入BigDecimalperValuefaceValue。pide(newBigDecimal(amount),3,BigDecimal。ROUNDHALFUP);平均下来最小的红包必须大于等于1分钱if(perValue。compareTo(MIN)1){thrownewRuntimeException(redpacketamountOutOfBoundsmin0。01);}String〔〕rsnewString〔amount〕;平均if(avgFlag){这里四舍五入重新计算perValuefaceValue。pide(newBigDecimal(amount),2,BigDecimal。ROUNDHALFUP);Arrays。fill(rs,perValue。toString());无法除尽if(perValue。multiply(newBigDecimal(amount))。compareTo(faceValue)!0){随机获取一个下标intindexnewRandom()。nextInt(amount);rs〔index〕String。valueOf(newBigDecimal(rs〔index〕)。add(faceValue。subtract(perValue。multiply(newBigDecimal(amount)))));}}随机先把低保放进去Arrays。fill(rs,MIN。toString());BigDecimalweightSumBigDecimal。ZERO;BigDecimalredSumBigDecimal。ZERO;BigDecimal〔〕weightsnewBigDecimal〔amount〕;随机for(inti0;irs。i){BigDecimalseednewBigDecimal(newRandom()。nextInt(amount));weightSumweightSum。add(seed);weights〔i〕循环最后一个后计算金额if(irs。length1){for(intj0;jrs。j){BigDecimalvalfaceValue。multiply(weights〔j〕。pide(weightSum,2,BigDecimal。ROUNDDOWN));redSumredSum。add(val);rs〔j〕val。add(MIN)。toString();}}}随机获取一个下标BigDecimaldifffaceValue。subtract(redSum);intindexnewRandom()。nextInt(amount);rs〔index〕String。valueOf(newBigDecimal(rs〔index〕)。add(diff));}}
投诉 评论 转载

买高端手机口碑很重要!2021年,哪些高端手机的口碑最好?随着手机市场全球化竞争愈发激烈,手机市场格局也发生了一定的变化,特别是高端手机市场这一块,是不少厂商奋力占据之地。例如iPhone12已经稳稳占据高端市场,在京东平台的好评率高……三星GalaxyA03s新品曝光,廉价入门机型据外媒gsmarena报道,三星GalaxyA02s的替代品部分配置信息曝光,预计被称为三星GalaxyA03s。外媒表示,三星GalaxyA03s将会配备6。5英寸LC……京东年货节已经来临,还不知道怎么入驻京东吗2022年京东年货节是京东年度大型活动之一。年货节将重点结合消费者需求进行策略布局,强化办年货、送年礼、春节送货三大心智。活动涵盖了新春年货、礼品礼盒、地域好物等多种商品类型;……致远互联亮相2021数博会COP赋能企业数智升级日前,由工业和信息化部、河北省人民政府主办的2021中国国际数字经济博览会(以下简称数博会)在河北省石家庄市落幕,本次大会以创新发展与数字经济为主题,全力打造国家级国际化数字经……麒麟9000E八扬声器10050毫安,很难不心动?近年来,随着人们办公的需要,很多手机厂商察觉到平板市场巨大,因此也开始推出配置强大的平板,事实证明,也有越来越多的人开始像随身携带手机一样,携带平板。目前,在国内市场中,把平板……随机红包算法(java)随机红包算法,每个人都有自己的实现思路。packagecom。jmmq。load。jim。importjava。math。BigDimport……破产不是终点,华晨困局难解破产重整不应成为一个甩掉负债包袱的借口,而是一个寻找方向、调整战略的契机。文东篱2020年11月19日,沈阳迎来了今冬第一场雪,由沈阳市中级人民法院组织召开的多方参……把灰尘放大几万倍后,我看到了彩色的世界文章源自:差评不知道各位差友的电脑机箱都长啥样?咳咳,为了与众不同,之前我在公司整了个开放式机箱,在一堆封闭式铁箱中,甭提多骚气了但俗话说得好,路遥知马力,日……60岁以上老人坐车有福利?今年新规下,或可享三个特权我国现存的老年群体数量有多少?根据国家有关机构发布的数据中显示,目前国内总人口依然维持在稳定的14亿左右,但老年人口的数量却在逐年上。目前为止,国内60岁以上的老年人数量占据总……iQOOneo5参数基本参数发布时间2021年,3月16日型号iQOONeo5手机类型5G手机,4G手机,智能手机,拍照手机,游戏手机,快充手机操作系统Android11,……gps是什么原理?能同时供全球的人使用,是怎么忙过来的?GPS系统主要由空间星座部分、地面监控部分和用户设备部分组成。空间星座部分GPS卫星星座由24颗卫星组成,其中21颗为工作卫星,3颗为备用卫星。24颗卫星均匀分布在……几十元的普通茶如何能卖上千元?这障眼法,两千年前就有人用!两千多年前韩非子写过一个叫做买椟还珠的故事,讥讽了人们被商品外包装迷惑,而忽略了商品本身价值的现象。然而时至今日,这种包装比商品贵现象仍然存在,尤其是在茶叶市场上,精美包……
可实现自动复位的工控机,在工业4。0中是何体验?有逆向思维的人多厉害,山东江苏2位首富,都曾在别人甩卖时狂习OPPO官网买手机货不对版,客服回复宣传有误不予退货?计算机毕业设计springbootvue校园二手交易平台虽然iPhone才上120Hz高刷,但苹果却是最早一批用这个国家部门开展联合行政指导!阿里巴巴腾讯也在其中未来10年你最应该学的3门编程语言海洋生髮护髮做发量王者,拒绝人间蒲公英人民财评智能客服,切忌聪明反被聪明误golang2021面向对象(39)指针类型匿名字段任天堂金字招牌值得玩家铭记的马力欧的20个超级瞬间windowsapi之EnumProcesses(查询系统所一个像夏天一个像秋天高一写人作文大灰狼和小白兔小学体育说课稿范文三星GalaxyTabPro8。4和iPadMini2哪个好教你如何解决u盘上有的文件删不掉问题认清他的真面目男人不想娶你的3句话实现职业生涯规划的步骤如何设计职业生涯规划的相关概念太原市粮食局(太原市粮食局开展食品安全宣传周活动)斗米兼职靠谱吗?推荐两款跟斗米兼职一样赚钱的平台泰狮金鱼最佳水温是多少,怎么养最好给孩子选零食“对标”看一看在甘肃平凉泾川经过的好地方怀孕38周胎儿大小

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形