csharp-随机数

产生指定上限的随机数

Random ran = new Random();

int n = ran.Next(100);

产生指定上下限的随机数

Random ran = new Random();

int n = ran.Next(100, 1000);

用 Random 结合数组产生指定范围随机数

public string GetRandom(string[] arr)
{
Random ran = new Random();
int n = ran.Next(arr.Length - 1);
return arr[n];
}

调用方法:

string[] arr = { "25", "28", "30", "50", "60" };
GetRandom(arr);

用 Random 产生小数随机数

public double NextDouble(Random ran, double minValue, double maxValue)
{
return ran.NextDouble() * (maxValue - minValue) + minValue;
}

Random ran = new Random();
double randNum = NextDouble(ran, 1.52, 2.65);
Response.Write(randNum);// 结果 2.30927768119112

// 保留指定位数
public double NextDouble(Random ran, double minValue, double maxValue, int decimalPlace)
{
double randNum = ran.NextDouble() * (maxValue - minValue) + minValue;
return Convert.ToDouble(randNum.ToString("f" + decimalPlace));
}

Random ran = new Random();
double randNum = NextDouble(ran, 5.16, 8.68, 2);// 保留两位小数
Response.Write(randNum);// 结果 8.46

产生相对不重复的随机数

System.Security.Cryptography命名空间下提供一个名为RNGCryptoServiceProvider的类,它采用系统当前的硬件信息、进程信息、线程信息、系统启动时间和当前精确时间作为填充因子,通过更好的算法生成高质量的随机数

byte[] randomBytes = new byte[4];
RNGCryptoServiceProvider rngServiceProvider = new RNGCryptoServiceProvider();
rngServiceProvider.GetBytes(randomBytes);
Int32 result = BitConverter.ToInt32(randomBytes, 0);