一個可以設置中獎概率的抽獎程序[轉]
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鏈接