[英]c# probability and random numbers
我已经看到这个问题以多种方式提出,但我只需要对我在这里所做的事情进行健全性检查。
基本上我想根据 1 到 100 之间生成的随机数触发一个概率为 25% 的事件:
int rand = random.Next(1,100);
下面会实现这个吗?
if (rand<=25)
{
// Some event...
}
我想我会使用 1 到 100 之间的数字,这样我可以稍后调整概率 - 例如通过使用调整到 23%
if (rand<=23) {...}
谢谢参观。
你犯的最大错误是它应该是random.Next(0,100)
正如文档所述
minValue:返回的随机数的下限。
maxValue:返回的随机数的唯一上限。 maxValue 必须大于或等于 minValue。
强调我的,独占意味着它不包括你传入的数字,所以我的代码生成范围 0-99 而你的代码生成范围 1-99。
所以将您的代码更改为
int rand = random.Next(0,100)
if (rand < 25) //25%
{
// Some event...
}
//other code
if (rand < 23) //23%
{
// Some event...
}
从<=
到<
的变化是因为您现在使用的是独占上限范围
Next(int, int)
的第二个参数是所需结果范围的唯一上限。 因此你应该使用这个:
if (random.Next(0, 100) < 25)
或者,如果您必须使用基于 1 的逻辑,
if (random.Next(1, 101) <= 25)
您也可以使用此代码(通常用于百分比计算,使用 0 和 1 之间的双精度值):
double rand = random.NextDouble();
if(rand < .25)
{
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.