范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

随机红包算法(java)

  随机红包算法,每个人都有自己的实现思路。 package com.jmmq.load.jim.algorithm;  import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import java.util.Random;  /**  * 红包算法  */ public class RedPacketPrc {      private static final BigDecimal MIN = new BigDecimal("0.01");      public static void main(String[] args) {          String[] rs = redPacketRandom(new BigDecimal(1), 100, false);         BigDecimal sum = BigDecimal.ZERO;         for(String str: rs){             System.out.println(str);             sum = sum.add(new BigDecimal(str));         }         System.out.println("sum:" + sum);          System.out.println("(¯`•._.• •._.•´¯)(¯`•¸•´¯) (¯`•._.• •._.•´¯)(¯`•¸•´¯) (¯`•._.• •._.•´¯)(¯`•¸•´¯)");          String[] res = redPacketOpen(new BigDecimal(20), 6, false);         BigDecimal sum2 = BigDecimal.ZERO;         for(String str: res){             System.out.println(str);             sum2 = sum2.add(new BigDecimal(str));         }         System.out.println("sum2:" + sum2);     }      /**      *      * @param faceValue 面值 单位:元      * @param amount    人数      * @param avgFlag 是否平均      * @return      *   平均分就不写了      *   思路一:      *        按百分比进行随机计算,最后一个进行匝差计算      */     public static String[] redPacketRandom(BigDecimal faceValue, int amount, boolean avgFlag){          // 先计算平均数  四舍五入         BigDecimal perValue = faceValue.pide(new BigDecimal(amount),3, BigDecimal.ROUND_HALF_UP);          // 平均下来最小的红包必须大于等于 1分钱         if(perValue.compareTo(MIN) == -1){             throw new RuntimeException("red packet amount OutOfBounds  min = 0.01");         }          String[] rs = new String[amount];          // 平均         if(avgFlag){             // 这里四舍五入重新计算             perValue = faceValue.pide(new BigDecimal(amount),2, BigDecimal.ROUND_HALF_UP);             Arrays.fill(rs, perValue.toString());             // 无法除尽             if(perValue.multiply(new BigDecimal(amount)).compareTo(faceValue) != 0 ){                 // 随机获取一个下标                 int index = new Random().nextInt(amount);                 rs[index] = String.valueOf(new BigDecimal(rs[index]).add(                            faceValue.subtract(perValue.multiply(new BigDecimal(amount)))));              }             return rs;         }          BigDecimal weightSum = BigDecimal.ZERO;         BigDecimal redSum = BigDecimal.ZERO;         BigDecimal[] weights = new BigDecimal[amount];         // 随机         for (int i=0; i -1 ){                     rs[i] = new BigDecimal(rs[i]).add(diff).toString();                     break;                 }             }         }          // 若没有任何一个元素能吃掉差额,因此差额需要进行分摊了,         // 这里简单粗暴的将循环到大于MIN的都改为MIN同时减少差额         // 这里代码不进行优化,会写另外一个优化的算法         if(faceValue.compareTo(redSum) != 0){             for(int i=0; i 0){                     if(new BigDecimal(rs[i]).add(diff).compareTo(MIN) > -1){                         rs[i] = new BigDecimal(rs[i]).add(diff).toString();                         break;                     } else {                         diff.add(new BigDecimal(rs[i])).subtract(MIN);                         rs[i] = MIN.toString();                     }                 }             }         }         return rs;     }       /**      *  上面算法进行优化      * @param faceValue 面值 单位:元      * @param amount    人数      * @param avgFlag 是否平均      * @return      *   优化思路:      *       上面算法为了保证红包最小金额处理上花费了大量的循环来处理      *       优化上就直接先分配最小金额,然后在进行随机分摊剩余的钱      */     public static String[] redPacketOpen(BigDecimal faceValue, int amount, boolean avgFlag){          // 先计算平均数  四舍五入         BigDecimal perValue = faceValue.pide(new BigDecimal(amount),3, BigDecimal.ROUND_HALF_UP);          // 平均下来最小的红包必须大于等于 1分钱         if(perValue.compareTo(MIN) == -1){             throw new RuntimeException("red packet amount OutOfBounds  min = 0.01");         }          String[] rs = new String[amount];          // 平均         if(avgFlag){             // 这里四舍五入重新计算             perValue = faceValue.pide(new BigDecimal(amount),2, BigDecimal.ROUND_HALF_UP);             Arrays.fill(rs, perValue.toString());             // 无法除尽             if(perValue.multiply(new BigDecimal(amount)).compareTo(faceValue) != 0 ){                 // 随机获取一个下标                 int index = new Random().nextInt(amount);                 rs[index] = String.valueOf(new BigDecimal(rs[index]).add(                         faceValue.subtract(perValue.multiply(new BigDecimal(amount)))));              }             return rs;         }          // 随机         // 先把低保放进去         Arrays.fill(rs, MIN.toString());          BigDecimal weightSum = BigDecimal.ZERO;         BigDecimal redSum = BigDecimal.ZERO;         BigDecimal[] weights = new BigDecimal[amount];         // 随机         for (int i=0; i
首发天玑1300!iQOOZ5长续航版再次被确认,红米K50没压力不出意外,接下来的手机市场中将会诞生很多千元手机,从前段时间的OPPOK10一加Ace竞速版之后,红米Note11T系列也进行官宣了,同时还有iQOOZ5长续航版也要来袭。面对如此恒大汽车量产时间推迟!电动知家消息,日前,有多家媒体报道称,恒大汽车无限期推迟电动汽车预售。5月18日,恒驰汽车发布官方声明称,今日,网上流传有关恒大汽车无限期推迟电动汽车预售的市场消息严重不实。受疫情通过大数据一键生成文章?只需复制粘贴3秒变原创?这个案子给洗稿大户们敲响警钟复制一篇文章,三秒内改写出一篇新文输入几个关键词,快速重组信息生成相关主题文章近年来,网络上出现大量用于洗稿的写作助手。然而,洗稿投机者们真的能全身而退吗?近日,新茶公司因不正当竞烧钱不停还少募了20亿,云从科技自身造血仍是难题5月18日,AI四小龙之一的云从科技(688327。SH)正式开启申购,公司发行价15。37元股,发行总数为1。12亿股,依此计算,若本次发行成功,云从科技预计募集资金总额17。2徐超云一行到常德经开区科技企业孵化器调研5月16日下午,常德经开区党工委委员管委会副主任徐超云,常德经开区园区发展中心局长谢鑫一行到常德经开区科技企业孵化器调研,了解孵化器的发展历程运营模式及孵化成果。徐超云实地走访了孵谷歌释放新信号2022年,手机屏幕会越来越烂谷歌释放的这个信号,是不是意味着手机屏幕即将进入摆烂的时代?就在前两天,谷歌2022年IO开发者大会召开,Android13Beta2版本也发布了。新增了一些功能,简而言之就是国内2022年6182000元左右手机哪些值得买?2022年手机的整体价格较2021年基本持平,主要厂商的旗舰机型仍然维持在5000元档位,且部分品牌首发价较去年有所回落。与此同时,中低端机型的整体配置也都向着更快更强靠拢,所以,那些手机上逐渐消失的功能现在手机性能越来越强,屏占比越来越高,摄像头像素越来越大,但是也有一些功能已经逐渐消失。可拆卸电池这个功能在功能机时代几乎是必备的,搭配万能充,基本无续航焦虑。万能充在安卓手机初期印度深夜扣押小米48亿资产,为何吃相这么难看?大家好,我是无相君。前几年,美国一直搞华为,确实也搞出成绩了。华为被迫拆分手机业务,手机的销量也大不如前。不知道是不是受到启发,印度也开始对逐渐占领国内市场的小米等中国企业蠢蠢欲动小米Redmi新机发布,骁龙480加持,售价1800左右Redmi新机发布,18W快充骁龙480后置双摄,1800贵吗?就在五一后,小米Redmi又推出了一款新机,命名为RedmiNote10T,从配置看,这款RedmiNote10T主手机性能排行榜出炉!小米12Pro排第9,华为手机未进入前十?安兔兔在近日公布了上月Android旗舰手机性能排行榜,榜单显示性能最强的Android旗舰手机是黑鲨游戏手机5Pro,这款机器搭载骁龙8Gen1芯片,16GB512GB存储组合,
更专业的长曝光!FindX3Pro摄影师版发布,对比苹果13丝毫不输万众瞩目之下,苹果正式发布全新的iPhone13系列。本次iPhone13系列升级颇多,其中除了搭载A15芯片外,最大的提升重点就是在影像方面。据了解,iPhone13ProMaxiPhone13登场,苹果官网的悄然变化一年一度的苹果春晚落下帷幕,本次苹果发布了iPhone13系列新iPadmini等一些列产品,重头戏当然是iPhone13系列了,具体的参数和变化相信各大头条及自媒体已经描述的非常e平台3。0发布,以后买比亚迪纯电动车可能也要排队了比亚迪全新e平台3。0实力非常强大,此平台纯电动汽车也可能像DMi系列车型一样面临一车难求的状态,让新能源汽车的渗透率进一步提升。日前,在比亚迪e平台3。0发布会现场,比亚迪创始人平台一秒无,官网挤爆炸!iPhone13首销竟能这么火?9月17日2000,iPhone13系列开启首销。尽管从早前的情况来看,iPhone13系列备货很充足,但与往年相同,京东天猫两大电商平台iPhone13miniiPhone13iModelY销量飙升,消费者对新势力的耐心已经耗光了?特斯拉自刹车问题成为舆论中心之后,对销量产生了一定程度的影响,但你要说这其中最大的赢家必须还得是新势力车企,尤其是专供纯电的几家。不过特斯拉在处理舆论而留出来的真空期并没有被蔚来和能跑100公里的电动车用什么电池?以旧换新多少钱?车主一看便知请您在阅读前,先点击上面的关注。感谢您的支持,我们将为您带来更多有价值的内容。近期,平台上有位车主问道电动车厂家卖的电动车是不是虚标的?能跑100多公里的电动车到底用的是什么电池?刚刚,特斯拉败诉!ampampquot车主韩潮ampampquot案二审宣判特斯拉被判退赔151万我胜诉了,维持一审原判,特斯拉存在欺诈,驳回上诉,退一赔三。历时755天,车主韩潮终于拿到了最终的判决书。根据9月16日北京市第二中级人民法院发布的民事判决书显示,驳回被告特斯拉汽胡国平AI赋能企业数字化是拿着锤子找钉子生产环节有更大机会出品搜狐科技编辑梁昌均9月16日消息,在今日启幕的2021全球人工智能产品应用博览会上,科大讯飞高级副总裁研究院院长胡国平带来了人工智能赋能企业数字化转型的主题演讲。他提到,当前,孟晚舟案只是开始,加拿大对华态度正走向恶劣孟晚舟是华为总裁任正非的女儿,她不论是在学业上还是在工作能力中都有极强的能力,在加拿大反华事件中,孟晚舟就成了牺牲品,被关押在加拿大很长一段时间,国内人民对此感到唏嘘。除了国民牵挂蒲公英4G工业级路由器R300A全网通,双备份网络,支持智能组网说到家用路由器,想必大家对这类产品都有一定的认识和了解,但要是提起4G工业路由器,相信知道或者见过4G工业级路由器的小伙伴应该不会很多,那么到底什么是工业路由器?跟我们家里用的路由网约车会实行全面办证吗?作为网约车司机,该如何选择去与留?我,5月份,新车,三证。(自己有5万,借了6万买的车,全办好11万。错误的投资款是11万。操它妈的滳滴,11万,做什么小本生意都可以了,搞得现在只看见一台破车和几万借款。)跑了10