首页 > 编程语言 > 详细

c# 红包二倍均值算法

时间:2019-09-30 12:01:32      阅读:130      评论:0      收藏:0      [点我收藏+]
public static List<double>RedPacketDoubleMethod(double total,int count,double min=0.01)
        {
            List<double> list = new List<double>();
            if (total <= count * min) { throw new Exception(message: "金额过小或最小金额过大!"); }
            double left_money = total,avg=0.0,money=0.0;
            Random ran = new Random();
            for (var i = count; i>1; i--) {
                avg = left_money / i *2;
                money = ran.NextDouble()*avg;
                money = money < min ? min : money;
                money = Math.Round(money, 2);
                list.Add(money);
                left_money = left_money - money;
            }
            left_money = Math.Round(left_money, 2);
            list.Add(left_money);
            var sum = list.Sum();
            if (Math.Abs(sum - total) > 0.00001) { throw new Exception(message: "金额分配异常!"); }
            return list;
        }

 

c# 红包二倍均值算法

原文:https://www.cnblogs.com/huanyun/p/11611767.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!