1. 程式人生 > >C#獲取隨機數

C#獲取隨機數

stat min .get converter bytes pro 計算機 生成器 指定

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);

}

C#獲取隨機數