首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

一个可以设置中奖概率的抽奖程序,该如何解决

2012-04-11 
一个可以设置中奖概率的抽奖程序最近在做一个BP石油的抽奖促销的WEB程序,实现一个抽奖转盘,上面有10个奖品

一个可以设置中奖概率的抽奖程序
最近在做一个BP石油的抽奖促销的WEB程序,实现一个抽奖转盘,上面有10个奖品,可以分别设置奖品的中奖概率,请问各位有什么好的抽奖算法或者指点一下思路,谢谢!

[解决办法]
首先不要纠缠界面问题。界面应该由专业的美工和可用化设计人员来设计,它只是需要编程人员支持而不是纠缠在编程中。

对于编程部分的算法,我写其中一种方法的demo简单演示一下:

C# code
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 概率百分比;        }    }} 

热点排行