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

    1.红包算法-封装方法

         /// <summary> 

            ///  微信红包算法 

            /// </summary> 

            /// <param name="allmoney">红包金额</param>

            /// <param name="moneycount">红包数量</param>

            /// <returns></returns>

            public static string GetMoneys(double allmoney, int moneycount) 

            { 

                string retamt = ""; 

                //人均最小金额 

                double min = 0.01; 

                if (allmoney < moneycount * min) 

                    return null; 

                        int num = moneycount; 

                List<double> array = new List<double>(); 

                Random r = new Random(); 

                for (int i = 0; i < num; i++) 

                {

                    if (moneycount == 1) 

                    {

                         moneycount--; 

                        array.Add(Convert.ToDouble(allmoney.ToString("0.0000"))); 

                        if (retamt.Length > 0) 

                        { 

                            retamt += ","; 

                        } 

                        retamt += Convert.ToDouble(allmoney.ToString("0.000")).ToString();     

                    }else 

                    {

                        //保存剩余金额可以足够的去分配剩余的红包数量 

                        double max = (allmoney - (moneycount - 1) * min) / moneycount * 2; 

                        double money = r.NextDouble() * max; 

                        money = Convert.ToDouble((money <= min ? min : money).ToString("0.0000")); 

                        moneycount--; 

                        allmoney -= money; 

                        array.Add(money); 

                        if (retamt.Length > 0) 

                        {

                            retamt += ","; 

                        } 

                        retamt += money.ToString();      

                    } 

                } 

                string ret = string.Join(",", retamt); 

                //再次随机 

                return ret; 

            } 

    2.调用

       //总金额66元红包个数3个

        string money= GetMoneys(66, 3);

                Response.Write("返回值:" +money);

  • 相关阅读:
    Java多线程(3) Volatile的实现原理
    Java 多线程(2)-Executor
    Java 多线程(1)-Thread和Runnable
    nginx+php部署
    MySQL的慢查询分析
    MySQL 错误
    log4j.properties配置详解
    Windows下Nginx的安装与配置(转)
    Java 字符的验证
    Spring MVC3返回JSON数据中文乱码问题解决(转)
  • 原文地址:https://www.cnblogs.com/dsjbk/p/12664560.html
Copyright © 2011-2022 走看看