在 .NET 中生成伪随机值的性能



为什么

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之间的范围是否有可能。最大值太大,所以它必须在内部生成两个值?因为我在 -1 和 int 之间生成时看不到行为。最大值-1

在查阅了 maccettura 推荐的源代码后,如果范围>Int32.MaxValue则使用性能较差的变体。

最新更新