我們都知道使用Random可以生成隨機數,默認的無參的構造函數New Random()。使用與時間相關的默認種子值,初始化 System.Random 類的新實例。
這種方式生成隨機數時重復的概率很大。可以傳入一個種子,用來計算偽隨機數序列起始值的數字。
/// <summary> /// 創建加密隨機數生成器 生成強隨機種子 /// </summary> /// <returns></returns> private static int GetRandomSeed() { byte[] bytes = new byte[4]; System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider(); rng.GetBytes(bytes); return BitConverter.ToInt32(bytes, 0); }
private static int GenerateRandom() { int seed = GetRandomSeed(); return new Random(seed) .Next(Int32.MaxValue); }
RNGCryptoServiceProvider 類
使用加密服務提供程序 (CSP) 提供的實現來實現加密隨機數生成器 (RNG)。