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

问题描述 投票:0回答:1

为什么是

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之间生成时没有看到行为

c# .net random .net-4.7.2
1个回答
0
投票

在按照maccettura的建议查阅源代码后,如果范围是>Int32.MaxValue,它使用性能较低的变体。

© www.soinside.com 2019 - 2024. All rights reserved.