首页 > 代码库 > .net C# 抽奖,中奖
.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; }
.net C# 抽奖,中奖
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。