• 简单的抽奖程序


    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 概率百分比;
            }
  • 相关阅读:
    hdu 1695 GCD 欧拉函数 + 容斥
    E. Xenia and Tree 分块 + LCA
    二分图匹配 + 构造 E. Arpa’s overnight party and Mehrdad’s silent entering
    Win系统如何修改远程桌面端口3389
    centos7下使用selenium实现文件上传
    windows下tesseract-ocr的安装及使用
    windows下pycharm输入法跟随设置
    django 外键使用select html
    xstart访问centos7
    Centos7 安装VNC实现远程桌面
  • 原文地址:https://www.cnblogs.com/codeloves/p/3110449.html
Copyright © 2020-2023  润新知