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 概率百分比;
            }
  • 相关阅读:
    HDU4666+POJ2926【最远曼哈顿距离】
    IOS学习之路九(配置restful webservice 框架restkit)
    vb.net 模拟UDP通信
    微信公众平台开发之万能表单
    学习Qt,Getting started
    spring的xml配置文件出现故障
    POJ 1731 Orders(STL运用)
    hiho1080 更为复杂的买卖房屋姿势
    Linux学习笔记(三):系统执行级与执行级的切换
    数据结构之哈希表
  • 原文地址:https://www.cnblogs.com/codeloves/p/3110449.html
Copyright © 2011-2022 走看看