永远的.Net

无怨无悔.Net

导航

随机数应用

Posted on 2005-04-20 19:17  曾经的歌王  阅读(295)  评论(0)    收藏  举报
我们可以使用两种方式初始化一个随机数发生器:

第一种方法不指定随机种子,系统自动选取当前时间作为随机种子:

Random ro = new Random();



第二种方法可以指定一个int型参数作为随机种子:


int iSeed=10;

Random ro = new Random(10);


之后,我们就可以使用这个Random类的对象来产生随机数,这时候要用到Random.Next()方法。这个方法使用相当灵活,你甚至可以指定产生的随机数的上下限。

不指定上下限的使用如下:

int iResult;

iResult=ro.Next();



下面的代码指定返回小于100的随机数:

int iResult;

int iUp=100;

iResult=ro.Next(iUp);


而下面这段代码则指定返回值必须在50-100的范围之内:


int iResult;

int iUp=100;

int iDown=50;

iResult=ro.Next(iDown,iUp);



除了Random.Next()方法之外,Random类还提供了Random.NextDouble()方法产生一个范围在0.0-1.0之间的随机的双精度浮点数:


double dResult;

dResult=ro.NextDouble();


另外一个与Random.NextDouble()方法相似的方法是Random.Sample(),它跟Random.NextDouble()方法唯一的区别在于访问级别,我们可以看看它们的原始声明:


protected virtual double Sample();

public virtual double NextDouble();


Random.Sample()方法是保护方法,只允许子类的对象访问,而Random.Sample()方法则可以看作是Random.Sample()的公开版本。一般地,用户在Random的子类中重写Sample()方法来得到更一般的分布。