简单结束一下Random类
命名空间:System
表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备。
伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,因为它们是用一种确定的数学算法选择的,但是从实用的角度而言,其随机程度已足够了。
伪随机数的生成是从种子值开始。如果反复使用同一个种子,就会生成相同的数字系列。产生不同序列的一种方法是使种子值与时间相关,从而对于 Random 的每个新实例,都会产生不同的系列。默认情况下,Random 类的无参数构造函数使用系统时钟生成其种子值,而参数化构造函数可根据当前时间的计时周期数采用 Int32 值。但是,因为时钟的分辨率有限,所以,如果使用无参数构造函数连续创建不同的 Random 对象,就会创建生成相同随机数序列的随机数生成器。
通过创建单个而不是多个 Random 对象可以避免此问题。
若要提高性能,请创建一个随时间推移能生成多个随机数的 Random 对象,而不要反复新建会生成同一个随机数的 Random 对象。
随机获取一个范围内的数
获取随机数:
//从1开始到20结束
Random r = new Random();
int p = r.Next(1, 20);
在1到20之间获取10个不重复的随机数:
public void Main(string[] args)
{
//定义一个需要数组
int[] index = new int[10];
//循环获取
for (int j = 0; j < 10; j++)
{
int p = Fan(20, index);
//把获取到的随机数放如数组中方便判断是否有重复的是随机数
index[j] = p;
//输出随机数
Console.WriteLine(p);
}
Console.Read();
}
//定义一个获取随机数的方法
public int Fan(int id, int[] index)
{
Random r = new Random();
//获取到随机数
int p = r.Next(1, id);
//判断是否获取到相同的随机数
for (int q = 0; q < index.Length; q++)
{
if (p == index[q])
{
//如果获取的数重复重新获取
return Fan(id, index);
}
}
return p;
}