码迷,mamicode.com
首页 > Windows程序 > 详细

.net C# 抽奖,中奖

时间:2017-03-16 16:13:41      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:derby   zed   parse   ext   ++   dem   自定义   return   turn   

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;
        }

 

.net C# 抽奖,中奖

标签:derby   zed   parse   ext   ++   dem   自定义   return   turn   

原文地址:http://www.cnblogs.com/fancyblogs/p/6559840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!