最快的方法来生成一个随机的布尔值
所以有几种方法在C#中创build一个随机布尔:
- 使用Random.Next():
rand.Next(2) == 0
- 使用Random.NextDouble():
rand.NextDouble() > 0.5
真的有区别吗? 如果是这样,哪一个实际上有更好的performance? 还是有另一种方式我没有看到,这可能会更快?
第一个选项 – rand.Next(2)
在后台执行下面的代码:
if (maxValue < 0) { throw new ArgumentOutOfRangeException("maxValue", Environment.GetResourceString("ArgumentOutOfRange_MustBePositive", new object[] { "maxValue" })); } return (int) (this.Sample() * maxValue);
和第二个选项 – rand.NextDouble()
:
return this.Sample();
由于第一个选项包含maxValue
validation,乘法和转换, 第二个选项可能更快 。
第二个选项小增强:
根据MSDN
public virtual double NextDouble()
回报
一个大于或等于0.0且小于1.0的双精度浮点数。
所以如果你想要一个均匀分布的随机布尔,你应该使用>= 0.5
rand.NextDouble() >= 0.5
范围1:[0.0 … 0.5 [
范围2:[0.5 … 1.0 [
|范围1 | = |范围2 |