隐藏

C#刮刮卡随机数概率算法

发布:2015/5/31 16:56:58作者:管理员 来源:本站 浏览次数:1711

先设定一个数量,假定10000张,比如存在List<int> list里,初始值全部为0。然后从头开始,按概率和数量将奖品写入,数字代表相应的奖。按上面的也就是
list[0]=1;//一等奖一个10000*0.01%

list[1]=2;
list[2]=2;

list[10]=2;//2等奖按0.1%算应该有10个(这个我不清楚实际是怎样的,概率也忘差不多了,你要自己改一下)
list[11]=3
list[12]=3;
list[60]=3;//3等按0.5%计算为50个
list[61]=0;
list[9999]=0; //剩下的全是0,表示没奖

下一步就是将这个List随机排列,可以考虑从第0个数开始,将第i个数字与0-list.Count之间的进行交换,最终就得到一个乱序的刮刮卡。
抽奖的时候就简单了,直接从rand.next(list.Count)中取一个随机数,比如是r,那list[r]的值即为中奖的级别,之后用list.RemoveAt(r)把这张卡删掉。