比如一等奖1个
二等奖2个
三等奖3个
一共可以抽奖10个,如果是静态的容易了,可是10抽完之后得保证最后所有奖项都抽到了并且不能多抽,所以分子分母是动态的

解决方案 »

  1.   


                int n=10;//奖品分数
                int m=100;//抽奖人数
                int o=0;//抽出次数
                for (int i = 1; i <= m; i++)
                {
                    
                    System.Threading.Thread.Sleep(1);//等待timer更新,防止autoRand.NextDouble()取同一值                Random autoRand = new Random();
                    double d = autoRand.NextDouble();
                    double e=((double)n - o) / (m - i+1);//中奖概率为没中出的奖品数除以未进行抽奖的人数
                    if (d < e)
                    {
                        Console.WriteLine(i.ToString() + "中奖了      d:" + d.ToString() + "      e:" + e);
                        o++;
                    }
    分子分母都是动态了满足你的要求。