zoukankan      html  css  js  c++  java
  • 别人抢红包,我们研究一下红包算法

     public static void main(String[] args) {
            //红包数
            int number = 10;
            //红包总额
            float total = 100;
            float money;
            //最小红包
            double min = 1;
            double max;
            int i = 1;
            List math = new ArrayList();
            DecimalFormat df = new DecimalFormat("###.##");
            while (i < number) {
                //保证即使一个红包是最大的了,后面剩下的红包,每个红包也不会小于最小值
                max = total - min * (number - i);
                int k = (int)(number - i) / 2;
                //保证最后两个人拿的红包不超出剩余红包
                if (number - i <= 2) {
                    k = number - i;
                }
                //最大的红包限定的平均线上下
                max = max / k;
                //保证每个红包大于最小值,又不会大于最大值
                money = (int) (min * 100 + Math.random() * (max * 100 - min * 100 + 1));
                money = (float)money / 100;
                //保留两位小数
                money = Float.parseFloat(df.format(money));
                total=(int)(total*100 - money*100);
                total = total/100;
                math.add(money);
                System.out.println("第" + i + "个人拿到" + money + "剩下" + total);
                i++;
                //最后一个人拿走剩下的红包
                if (i == number) {
                    math.add(total);
                    System.out.println("第" + i + "个人拿到" + total + "剩下0");
                }
            }
    //取数组中最大的一个值的索引
            System.out.println("本轮发红包中第" + (math.indexOf(Collections.max(math)) + 1) + "个人手气最佳");
        }

     博客搬家,本文新地址:http://www.zicheng.net/article/2

  • 相关阅读:
    常用地址
    三步搭建Spring Cloud 服务注册
    Java判断两个时间段是否有交集
    CentOS-7下安装docker
    linux 版菱形
    《少林问道》
    Linux下安装Nginx详细图解教程
    测试
    CentOS修改主机名和主机表
    虚拟机中CentOS配置静态网络
  • 原文地址:https://www.cnblogs.com/xusir/p/4304712.html
Copyright © 2011-2022 走看看