为什么是
var random = new Random();
random.Next(0 /* or any other positive value */, int.MaxValue);
大约是以下的1.5倍:
random.Next(-1, int.MaxValue);
.NET Framework(4.7.2)如何实现此功能?他们不应该有相同的表现吗?
(通过在循环中生成10M值来测量性能)
编辑:-1和int.MaxValue之间的范围是否太大,因此必须在内部生成两个值?因为我在-1和int.MaxValue-1之间生成时没有看到行为
在按照maccettura的建议查阅源代码后,如果范围是>Int32.MaxValue
,它使用性能较低的变体。