C#獲取隨機數


C#獲取隨機數最常用的就是直接用new Random().Next(min,max),但這種方法存在一個問題,就是當計算機運算速度足夠快的時候,系統來不及計算下一個隨機數,最終可能產生一長串相同的數值,也即失去了隨機數的意義,下面的算法能比較好的解決這個問題:

        /// <summary>
        /// 獲取指定區間的隨機數
        /// </summary>
        /// <param name="min">The minimum.</param>
        /// <param name="max">The maximum.</param>
        /// <returns></returns>
        public static int GetRandom(int min=0,int max=30)
        {
            return new Random(GetRandomSeed()).Next(min, max);
        }

        /// <summary>
        /// 加密隨機數生成器 生成隨機種子
        /// </summary>
        /// <returns></returns>

        static int GetRandomSeed()

        {

            byte[] bytes = new byte[4];

            System.Security.Cryptography.RNGCryptoServiceProvider r= new System.Security.Cryptography.RNGCryptoServiceProvider();

            r.GetBytes(bytes);

            return BitConverter.ToInt32(bytes, 0);

        }


免責聲明!

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



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