红包随机金额

static void Main(string[] args)
{
double totalAmount = 20;
int num = 10;
double minAmount = 0.01;
Random r = new Random();
for (int i = 1; i < num; i++)
{
double safeAmount = (totalAmount - (num - i) * minAmount) / (num - i);
//double money = new Random().Next(Convert.ToInt32(minAmount * 100), Convert.ToInt32(safeAmount * 100)) / 100; 
double money = NextDouble(r, minAmount * 100, safeAmount * 100) / 100;
money = Math.Round(money, 2, MidpointRounding.AwayFromZero);
totalAmount=totalAmount-money;
totalAmount = Math.Round(totalAmount, 2, MidpointRounding.AwayFromZero);
Console.WriteLine("" + i + "个红包:" + money + " 元,余额:" + totalAmount + "");
}
Console.WriteLine("" + num + "个红包:" + totalAmount + " 元,余额:0 元");

Console.ReadKey();
}

/// <summary>
/// 生成设置范围内的Double的随机数
/// eg:_random.NextDouble(1.5, 2.5)
/// </summary>
/// <param name="random">Random</param>
/// <param name="miniDouble">生成随机数的最大值</param>
/// <param name="maxiDouble">生成随机数的最小值</param>
/// <returns>当Random等于NULL的时候返回0;</returns>
protected static double NextDouble(Random random, double miniDouble, double maxiDouble)
{
if (random != null)
{
return random.NextDouble() * (maxiDouble - miniDouble) + miniDouble;
}
else
{
return 0.0d;
}
}

 

posted @ 2019-11-28 09:24  卡玛兹  阅读(409)  评论(0编辑  收藏  举报
你好