1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C#中如何实现微信红包功能的示例代码分享

C#中如何实现微信红包功能的示例代码分享

时间:2019-05-29 11:25:34

相关推荐

C#中如何实现微信红包功能的示例代码分享

后端开发|C#.Net教程

csharp,.net,示例,功能,实现,红包,如何

后端开发-C#.Net教程

这篇文章主要介绍了C#实现微信红包功能,使用正态分布计算红包金额,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

datagrid源码修改,vscode运行的路径,莱桥ubuntu,tomcat重新选择,查看sqlite数据库属性,B站爬虫代码url怎么获取,php房产网站,黄冈seo排名收费标准,母婴护理网站排名,网页ui布局,微信小程序模板示例lzw

本文实例为大家分享了C#仿微信红包功能的具体代码,供大家参考,具体内容如下

管理端 辅助端源码,ubuntu桥接 nat,南非爬虫类,kingcms <?php,淄博seo排名lzw

Program.cs代码:

服务器 域名 源码,Ubuntu改桌面布局,tomcat8080网站,上海爬虫馆门票,php制作登录界面教程交流,seo的目标lzw

class Program { static void Main(string[] args) {//初始化要发起的红包基础数据double total = 100;int num = 50;double min = 0.01;string temp;bool flag = false;Console.WriteLine(string.Format("是否需要自定义红包金额和数量(默认{0}元/{1}人)Y/N:", total, num));temp = Console.ReadLine();if (temp.Trim().ToLower().Equals("y") || temp.Trim().ToLower().Equals("yes")){ Console.WriteLine("请输入你要发起的红包金额:"); do {temp = Console.ReadLine();flag = double.TryParse(temp, out total);if (!flag){ Console.WriteLine("金额必须为整数或小数,请重新输入:");} } while (!flag); Console.WriteLine("请输入你要发起的红包个数:"); do {temp = Console.ReadLine();flag = int.TryParse(temp, out num);if (!flag){ Console.WriteLine("红包个数必须为整数,请重新输入:");} } while (!flag);}total -= min * num;if (total < 0){ Console.WriteLine("抱歉,你的金额不足!"); return;}//产生正态分布的随机红包金额,并计算相关的金额和数量保证数据的准确性double average = total / num;double variance = 1;Random u1 = new Random();Random u2 = new Random();double[] nums = new double[num];for (int i = 0; i < num; i++){ double? result = total; if (i 0) {do{ result = Round((double)Normal(u1.NextDouble(), u2.NextDouble(), average, variance), 2);} while (result == null || result result){ total = (double)Round((total - (double)result), 2);}else{ result = total; total = 0;} } else if (i == num - 1) {total = 0; } nums[i] = Math.Round(min + (double)result, 2); //浮点运算问题,这里需要四舍五入数据才正确 Console.WriteLine(string.Format("第{0}个红包金额:{1}", i + 1, (min + result))); Console.WriteLine("剩余金额:" + ((i != num - 1 && total == 0) ? min * (num - i - 1) : total + (min * (num - i - 1))));}Console.WriteLine("最大金额:" + nums.Max());Console.WriteLine("最小金额:" + nums.Min());Console.WriteLine("总额:" + Round(nums.Sum(), 2));Console.WriteLine("初始方差:" + variance);Console.WriteLine("结果方差:" + Variance(nums));Console.WriteLine("按任意键退出!");Console.ReadKey(); } ////// 正态分布第一个随机数 /// 正态分布第二个随机数 /// 正态期望(平均值) /// 正态标准差(Math.Sqrt(方差)) ///public static double? Normal(double u1, double u2, double averageValue, double variance) {double? result = null;try{ result = averageValue + Math.Sqrt(variance) * Math.Sqrt((-2) * Math.Log(u1)) * Math.Sin(2 * Math.PI * u2);}catch (Exception){ result = null;}return result; } ////// 要求的数组 ///public static double Variance(double[] nums) {double average = nums.Sum() / nums.Length;double sum = 0;double variance = 0;foreach (double num in nums){ sum += Math.Pow((num - average), 2);}variance = sum / nums.Length;return variance; } ////// 要截取的小数 /// 截取小数后位数 ///public static double? Round(double originNum, int lastNum) {double? result = null;int index = originNum.ToString().IndexOf(.);if (index != -1){ string temp = originNum.ToString(); result = Convert.ToDouble(temp.Substring(0, index + 1) + temp.Substring(index + 1, Math.Min(temp.Length - index - 1, lastNum)));}if (result == 0){ result = null;}else if (index == -1){ result = originNum;}return result; } }

运行结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。