zoukankan      html  css  js  c++  java
  • 简单的抽奖程序

    private void button1_Click(object sender, EventArgs e)
            {
                Dictionary<stringint> dic = new Dictionary<stringint>();
                dic.Add("苹果", 30);
                dic.Add("梨子", 15);
                dic.Add("南瓜", 60);
     
                int total = 0;
     
                //把几种奖品的属性值加起来。
                foreach (KeyValuePair<stringint> kvp in dic)
                {
                    total += kvp.Value;
                }
     
                Random rnd = new Random();
                int rndNum = rnd.Next(1, total + 1);//随机产生一个【1,total】的数。
                int currentTotal = 0;
                foreach (KeyValuePair<stringint> kvp in dic)
                {
                    currentTotal += kvp.Value;
                    //小于等于前面几种奖品的属性值之和,那么就会是当前这个奖品。
                    if (rndNum <= currentTotal)
                    {
                        MessageBox.Show(rndNum.ToString());
                        MessageBox.Show("此次抽中的是:" + kvp.Key);
                        break;
                    }
                }
            }
     public static void Main()
            {
                var 转盘 = new List<奖品>{ new 奖品{ 名称="笔记本", 概率百分比=10}, 
                     new 奖品{ 名称="石楠木烟斗", 概率百分比=20},
                    new 奖品{ 名称="一块糖", 概率百分比=80},
                    new 奖品{ 名称="随便", 概率百分比=1},
                    new 奖品{ 名称="一只绣花鞋", 概率百分比=5}};
                Enumerable.Range(1, 20).ToList().ForEach(x =>
                {
                    Console.WriteLine("第{0}次选择{1}", x, 抽奖(转盘).名称);
                });
                Console.ReadKey();
            }
     
            static Random Rnd = new Random();
     
            private static 奖品 抽奖(List<奖品> 转盘)
            {
                return (from x in Enumerable.Range(0, 1000000)  //最多支100万次骰子
                        let 随机选择一个奖品 = 转盘[Rnd.Next(转盘.Count())]
                        let 支骰子 = Rnd.Next(0, 100)
                        where 支骰子 < 随机选择一个奖品.概率百分比
                        select 随机选择一个奖品).First();
            }
     
            class 奖品
            {
                public string 名称;
                public int 概率百分比;
            }
  • 相关阅读:
    2.SpringMVC入门
    1.SpringMVC回顾MVC
    10.spring声明式事务
    9.spring整合Mybatis
    maven项目的classpath路径对应的文件目录
    8.spring中的AOP
    Java通过反射破解单例模式和防止反射破解单例模式案例
    7.代理模式
    让Java项目默认使用jdk8等级进行编译
    return false取消手机移动端的默认设置
  • 原文地址:https://www.cnblogs.com/codeloves/p/3110449.html
Copyright © 2011-2022 走看看