一個可以設置中獎概率的抽獎程序[轉]


一個可以設置中獎概率的抽獎程序[轉]

using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleApplication1
{
    class Program
    {
 
        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 概率百分比;
        }
 
    }
}

原文CSDN鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM