最快的方法来生成一个随机的布尔值

所以有几种方法在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(); 

由于第一个选项包含maxValuevalidation,乘法和转换, 第二个选项可能更快

第二个选项小增强:

根据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 |