如何精确的控制抽奖概率为1/2
如题,我现在需要一个抽奖,必须控制概率为1/2,当然,有前置条件的,所以不要问为什么要1/2这么高的概率了~~~
我使用的方法是使用随机函数Random的Next(2),并且使用RNGCryptoServiceProvider的GetBytes方法获得种子值,但是BOSS还是说概率有问题,感觉出现较小值的概率高,有没有更完美的方法~~~
/// <summary>random 概率?抽奖
/// 根据获取抽到的奖品
/// </summary>
/// <param name="lotteryRules"></param>
/// <returns></returns>
public int GetLotteryPoints(int oldPoints)
{
Random random = new Random(GetRandomSeed());
int m = random.Next(2);
if (m == 1)
{
return this.MinAward;
}
else
{
return this.MaxAward;
}
}
/// <summary>
/// 获取随机种子值,防止连续快速取随机数重复问题
/// </summary>
/// <returns></returns>
public static int GetRandomSeed()
{
byte[] bytes = new byte[4];
System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
rng.GetBytes(bytes);
return BitConverter.ToInt32(bytes, 0);
}