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

  • 相关阅读:
    组件基础
    css 手稿
    HTML手稿
    Vmstat命令监控Linux资源并将数据通过图形化方式显示
    JAVA---类和对象
    JAVA---Graphics2D类
    JAVA---数组
    JAVA---图形处理
    JAVA----日历源代码
    SQL常用语句大全
  • 原文地址:https://www.cnblogs.com/dsjbk/p/12664560.html
Copyright © 2011-2022 走看看