c#random随机函数使用方法

c#random随机函数使用方法

ID:32365914

大小:46.30 KB

页数:4页

时间:2019-02-03

c#random随机函数使用方法_第1页
c#random随机函数使用方法_第2页
c#random随机函数使用方法_第3页
c#random随机函数使用方法_第4页
资源描述:

《c#random随机函数使用方法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、C#Random随机函数使用方法 随机数的使用很普遍,可用它随机显示图片,用它防止无聊的人在论坛灌水还可以用来加密信息等等。本文讨论如何在一段数字区间内随机生成若干个互不相同的随机数,比如在从1到20间随机生成6个互不相同的整数,并通过此文介绍Visualc#中随机数的用法。.net.Frameword中提供了一个专门产生随机数的类System.Random,此类默认情况下已被导入,编程过程中可以直接使用。我们知道,计算机并不能产生完全随机的数字,它生成的数字被称为伪随机数,它是以相同的概率从一组有限的数字中选取的,所选的数字并不具有完全的随机性,

2、但就实用而言,其随机程度已经足够了。我们可以用以下两种方法初始化一个随机数发生器;函数是这样用,比如100至999的随机数Randomran=newRandom();intRandKey=ran.Next(100,999);不过这样会有重复,可以给Random一个系统时间做为参数,以此产生随机数,就不会重复了第一种方法不指定随机种子,系统自动选取当前时前作随机种子:Randomra=newRandom();第二种方法是指定一个int型的参数作为随机种子:intiSeed=6;Randomra=newRandom(iSeed);下面我们要用到Rand

3、om.Next()方法产生随机数。ra.Next();它返回一个大于或等于零而小于2,147,483,647的数,这并不满足我们的需要,下面我们介绍它的重载函数和其它一些方法。publicvirtualintNext(int);用法:ra.next(20)返回一个小于所指定最大值(此处为20)的正随机数。publicvirtualintNext(intminValue,intmaxValue);用法:ra.next(1,20)返回一个指定范围内(此处为1-20之间)的随机数,我们在下面的实例中会用到此函数。类System.Random还有几个方法分

4、别是:公共方法:NextBytes用随机数填充指定字节数组的元素。NextDouble返回一个介于0.0和1.0之间的随机数。受保护的方法:Sample返回一个介于0.0和1.0之间的随机数,只允许子类对象访问。以上介绍了随机数的基本用法,下面我们用一个实例来做更进一步的介绍。要在一段数字区间内随机生成若干个互不相同的随机数,比如在从1到20间随机生成6个互不相同的整数。主要是下面两个函数getRandomNum与getNum:publicint[]getRandomNum(intnum,intminValue,intmaxValue){Rando

5、mra=newRandom(unchecked((int)DateTime.Now.Ticks));int[]arrNum=newint[num];inttmp=0;for(inti=0;i<=num-1;i++){tmp=ra.Next(minValue,maxValue);//随机取数arrNum[i]=getNum(arrNum,tmp,minValue,maxValue,ra);//取出值赋到数组中}returnarrNum;}getRandomNum即是在区间[minValue,maxValue]取出num个互不相同的随机数,返回的数组包

6、含着结果。其中随机数是这样创建的Randomra=newRandom(unchecked((int)DateTime.Now.Ticks));为什么不用Randomra=newRandom();(系统自动选取当前时前作随机种子)呢?用系统时间做随机种子并不保险,如果应用程序在一个较快的计算机上运行,则该计算机的系统时钟可能没有时间在此构造函数的调用之间进行更改,Random的不同实例的种子值可能相同。这种情况下,我们就需要另外的算法来保证产生的数字的随机性。所以为了保证产生的随机数足够"随机",我们不得不使用复杂一点的方法来获得随机种子。在上面的这

7、段程序中,我们首先使用系统时间作为随机种子,然后将上一次产生的随机数跟循环变量和一个与系统时间有关的整型参数相乘,以之作为随机种子,从而得到了每次都不同的随机种子,保证了产生足够"随机"的随机数。函数getNum是一递归,用它来检测生成的随机数是否有重复,如果取出来的数字和已取得的数字有重复就重新随机获取。值得注意的是要用一同一个随机数实例生成,所以ra要作为参数传入getNum中,否则生成的数字会有重复。publicintgetNum(int[]arrNum,inttmp,intminValue,intmaxValue,Randomra){int

8、n=0;while(n<=arrNum.Length-1){if(arrNum[n]==tmp)//利用循环判断是否有重复

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。