奖品1  出现概率为 1/10000
奖品2  出现概率为 1/1000
奖品3  出现概率为 1/100
鼓励奖1 ,鼓励奖2
我想请教各位.怎么控制他们的随机概率问题..

解决方案 »

  1.   

    Radom r=new Radom(0,1000)
    if(r.Next()<1)这个是千分一
      

  2.   

    两种方法: 
    1、 定义一个最大区间,如100000,新建一个区间数组,如a[10,110,1110,100000],然后出0~100000的随机数,在哪个区间就是哪个。 
    注意:区间的差值/最大上限=目标概率    (要判断是哪个区间,只要for循环一下取第一个 a[i]<[随机数] 的i+1 即可)2、 定义一个大数组,如a[100000],按照概率往里填充目标值,如a[1,1,1, …… 2,2,…… ,5,……],然后打乱(随你怎么打乱都行),再出0~99999的随机数n,取a[n]即可。 
    注意:所有概率和必须等于1,不要漏掉你不必控制出现 “未中奖” 的概率。当然,如果你有历史出现记录,还可以在取到出现值后再判断一次,超出概率范围就重出。