//需要引用ServiceStack.Redis; static void Main(string[] args) { double totalAmount = 100; int num = 10; double minAmcount = 0.01; RedisClient client = new RedisClient("127.0.0.1", 6379); Queue<double> qu = new Queue<double>(); Random r = new Random(); for (int i = 1; i < num; i++) { double safeAmount = (totalAmount - (num - 1) * minAmcount) / (num - 1); double money = NextDouble(r, minAmcount * 100, safeAmount * 100) / 100; money = Math.Round(money, 2, MidpointRounding.AwayFromZero); totalAmount = totalAmount - money; totalAmount = Math.Round(totalAmount, 2, MidpointRounding.AwayFromZero); qu.Enqueue(money); Console.WriteLine("第" + i + "个红包:" + money + "元,余额:" + totalAmount + "元"); } client.Add<Queue<double>>("key", qu); Queue<double> que = client.Get<Queue<double>>("key"); if (que.Count>0) { double am = que.Dequeue(); var t = new { name = "123213", amount = am, date = DateTime.Now }; } else { } } protected static double NextDouble(Random random,double miniDouble,double maxiDouble) { if (random != null) { return random.NextDouble() * (maxiDouble - miniDouble) + miniDouble; } else { return 0.0d; } }
原文:https://www.cnblogs.com/lvjingchao/p/13214307.html