zoukankan      html  css  js  c++  java
  • 流量红包算法

    public class MyTest {
        /**
         * 
         * @param total 流量总数
         * @param num    人数
         * @param min    每人最小流量数
         * @param redpacket    统计数组
         */
        public static void deal(int total,int num,int min,int []redpacket){
            double max;
            int flow;
            int tempTotal;
            if(min * num>total) {System.out.print("输入数据有误");return;}
            for(int i=num;i>0;i--){
                if(i==1){
                    redpacket[num-i]+=total;    
                    System.out.println("第"+(num-i+1)+"个人得到"+total+"红包;  "+"剩余:"+0);
                    break;
                }
                max=1.0*total/i*2;
                flow = (int)Math.round((Math.random()*max));
                flow=flow<min?min:flow;
                tempTotal=total;
                total = total - flow;
                if(total<(i-1)*min){
                    flow=tempTotal-(i-1)*min;
                    total = (i-1)*min;
                }
                System.out.println("第"+(num-i+1)+"个人得到"+flow+"红包;  "+"剩余:"+total);
                redpacket[num-i]+=flow;
            }
        }
        public static void main(String args[]){
            int []redpacket = new int[100];//统计数组
            int cycle=100;    //循环次数
            int total=100;    //流量总数
            int num = 5;    //人数(不要超过100)
            int min = 1;    //最小流量数
            for(int i=0;i<num;i++) redpacket[i]=0;
            for(int i=0;i<cycle;i++)
            {
                deal(total,num,min,redpacket);
            }
            for(int i=0;i<num;i++){
                System.out.println(redpacket[i]);
            }
        }
    }
  • 相关阅读:
    FormData的使用
    数据绑定
    DOM的映射机制
    leetcode750
    leetcode135
    leetcode41
    leetcode269
    leetcode253
    leetcode42
    leetcode48
  • 原文地址:https://www.cnblogs.com/fdzfd/p/6047956.html
Copyright © 2011-2022 走看看