zoukankan      html  css  js  c++  java
  • 简易实现支持设置最大值最小值的拼手气红包方法

    • 拼手气红包算法网上存在很多,效率一般也都很快,但是主管提出的需求中,要求拼手气可以设置最大值最小值。。。
    • 于是便出现了如下代码:
    /**
         * 手写拼手机红包金额生成(单位:分)
         * @param amount  总金额
         * @param person  总人数
         * @param max  最大金额
         * @param min  最小金额
         * @return
         */
        private List<Integer> randomHandOutAlgorithm(int amount,int person,int max,int min){
            List<Integer> list = new ArrayList<>();
            Random random = new Random();
            int num = person;
            for (int i=0;i<num-1;i++){
                //生成随机数
                int temp = random.nextInt(max - min) + min;
                person--;
                //如果随机数使得后续数据不符合条件,则取均值
                if (amount-temp<=0 ||(amount-temp)/person >max ||(amount-temp)/person <min){
                    temp = amount/(person+1);
                }
                list.add(temp);
                amount-=temp;
            }
            list.add(amount);
            //随机顺序,可不加
            Collections.shuffle(list);
            return list;
        }
    

    本人菜鸡一枚,如有好的建议,欢迎留言,感谢

  • 相关阅读:
    Lc112_路径总和
    多线程(4)
    Lc257_二叉树的所有路径
    Lc226_翻转二叉树
    Lc145_二叉树的后序遍历
    Lc144_二叉树的前序遍历
    Lc102_二叉树的层序遍历
    Lc101_对称二叉树
    Lc100_相同的树
    Lc94_二叉树的中序遍历
  • 原文地址:https://www.cnblogs.com/fqliu/p/14653569.html
Copyright © 2011-2022 走看看