C#源码分析 --- Random
在Random类实现中,使用基于Knuth的减量算法和《Numerical Recipes in C》的方法,设计了一个高效且周期长的伪随机数生成器(PRNG)。
.Net Framework Random类源码地址:
random.cs (microsoft.com)https://referencesource.microsoft.com/#mscorlib/system/random.cs,074009c42684ee11
一、初始化算法:
1.Knuth的减量算法(Subtractive Method)
核心思想:生成随机数的核心逻辑
双指针索引:维护一个固定长度的状态数组(如代码中的SeedArray[56]),通过两个移动指针(inext和inextp)遍历数组。
差值生成:每次生成随机数时,