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;
        }
    

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

  • 相关阅读:
    MySQL 存储过程
    linux iptables 相关设置
    Ubuntu iptables 设置
    Mac OS 10.12
    解决:cc1.exe: sorry, unimplemented: 64-bit mode not compiled in
    go get golang.org/x/net 安装失败的解决方法!
    Ubuntu16.04
    Ubuntu16.04
    Ubuntu16.04
    在Ubuntu16.04里面安装Gogland!
  • 原文地址:https://www.cnblogs.com/fqliu/p/14653569.html
Copyright © 2011-2022 走看看