Random隨機數種子生成,減少生成重復隨機數的可能


我們都知道使用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)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM