C# 中的隨機數生成器是通過 System.Random
類實現的
種子(Seed):隨機數生成器的初始值。它是一個整數,用于確定生成器的起始狀態。種子相同時,生成的隨機數序列也相同。如果不提供種子,System.Random
將使用當前時間的毫秒數作為默認種子。
偽隨機數生成算法:System.Random
類使用一種稱為線性同余方法(Linear Congruential Generator, LCG)的偽隨機數生成算法。這種算法基于一個數學公式,在給定一個初始值(種子)的情況下,生成一系列看似隨機的數字。LCG 算法的公式如下:
Xn+1 = (aXn + c) % m
其中,Xn 是當前的隨機數,Xn+1 是下一個隨機數,a、c 和 m 是算法的常數參數。
數值范圍:System.Random
類提供了多種方法來生成不同范圍內的隨機數,例如:
Next()
:生成一個非負整數。Next(int maxValue)
:生成一個介于 0(包含)和指定最大值(不包含)之間的非負整數。Next(int minValue, int maxValue)
:生成一個介于指定最小值(包含)和最大值(不包含)之間的整數。NextDouble()
:生成一個介于 0(包含)和 1(不包含)之間的雙精度浮點數。這些方法內部使用 LCG 算法生成的隨機數,并根據所需的數值范圍進行調整。
需要注意的是,System.Random
生成的隨機數是偽隨機數,因此在某些對隨機性要求較高的場景(如密碼學或安全應用)中,可能需要使用其他方法來生成真正的隨機數。在這些場景中,可以考慮使用 System.Security.Cryptography.RandomNumberGenerator
類。