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;
        }
02-10 22:12