zoukankan      html  css  js  c++  java
  • .net C# 抽奖,中奖

    demo设置了8个奖项,每个奖项可以自定义中奖率,精度为1/10000

            public string PrizeDraw()
            {
                //奖品以及中奖率
                const string prizeString = "奖品一:33,奖品二:30,奖品三:9,奖品四:8,奖品五:7,奖品六:6,奖品七:5,奖品八:2";
                //将中奖率*100再取整,放在数组中,并从小到大排序
                var prizeArray = prizeString.Split(',').Select(j => new { Prize = j.Split(':')[0], Change = (int)(double.Parse(j.Split(':')[1])* 100) }).OrderBy(j => j.Change).ToArray();
                //将中奖率累加,放到字典里
                var prizeDictionary = new Dictionary<string, int>();
                for (var i = 0; i < 8; i++)
                {
                    var allChange = 0;
                    for (var j = 0; j <= i; j++)
                    {
                        allChange += prizeArray[j].Change;
                    }
                    prizeDictionary.Add(prizeArray[i].Prize, allChange);
                }
                //产生一个1-10000的随机数
                var rd = new Random();
                var rdChange = rd.Next(1, 10001);
                //找第一个大于随机值的奖项
                return prizeDictionary.First(j => j.Value >= rdChange).Key;
            }
  • 相关阅读:
    使用GitLab搭建Git仓库
    SpringBoot web开发
    springboot配置
    springboot自动配置原理
    springboot修改端口号
    springboot创建方式
    junit运行多个测试的方法
    junit常用注解
    junit断言
    sublime将.m文件关联MATLAB类型高亮
  • 原文地址:https://www.cnblogs.com/fancyblogs/p/6559840.html
Copyright © 2011-2022 走看看