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);
}
C#獲取隨機數