全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C# Random随机函数使用方法 随机数的使用很普遍,可用它随机显示图片,用它防止无聊的人在论坛灌水还可以用来加密信息等等。本文讨论如何在一段数字区间内随机生成若干个互不相同的随机数,比如在从1到20间随机生成6个互不相同的整数,并通过此文介绍Visual c#中随机数的用法。.net.Frameword中提供了一个专门产生随机数的类System.Random,此类默认情况下已被导入,编程过程中可以直接使用。我们知道,计算机并不能产生完全随机的数字,它生成的数字被称为伪随机数,它是以相同的概率从一组有限的数字中选取的,所选的数字并不具有完全的随机性,但就实用而言,其随机程度已经足够了。我们可以用以下两种方法初始化一个随机数发生器; 函数是这样用,比如100至999的随机数Random ran=new Random();int RandKey=ran.Next(100,999);不过这样会有重复,可以给Random一个系统时间做为参数,以此产生随机数,就不会重复了第一种方法不指定随机种子,系统自动选取当前时前作随机种子:Random ra=new Random();第二种方法是指定一个int型的参数作为随机种子:int iSeed=6;Random ra=new Random(iSeed);下面我们要用到Random.Next()方法产生随机数。ra.Next();它返回一个大于或等于零而小于2,147,483,647的数,这并不满足我们的需要,下面我们介绍它的重载函数和其它一些方法。public virtual int Next(int);用法:ra.next(20)返回一个小于所指定最大值(此处为20)的正随机数。public virtual int Next(int minValue, int maxValue);用法:ra.next(1,20)返回一个指定范围内(此处为1-20之间)的随机数,我们在下面的实例中会用到此函数。类System.Random还有几个方法分别是:公共方法:NextBytes用随机数填充指定字节数组的元素。NextDouble返回一个介于 0.0 和 1.0 之间的随机数。受保护的方法:Sample返回一个介于 0.0 和 1.0 之间的随机数,只允许子类对象访问。以上介绍了随机数的基本用法,下面我们用一个实例来做更进一步的介绍。要在一段数字区间内随机生成若干个互不相同的随机数,比如在从1到20间随机生成6个互不相同的整数。主要是下面两个函数getRandomNum与getNum:public int getRandomNum(int num,int minValue,int maxValue)Random ra=new Random(unchecked(int)DateTime.Now.Ticks);int arrNum=new intnum;int tmp=0;for (int i=0;i=num-1;i+)tmp=ra.Next(minValue,maxValue); /随机取数arrNumi=getNum(arrNum,tmp,minValue,maxValue,ra); /取出值赋到数组中return arrNum;getRandomNum即是在区间minValue,maxValue取出num个互不相同的随机数,返回的数组包含着结果。其中随机数是这样创建的 Random ra=new Random(unchecked(int)DateTime.Now.Ticks);为什么不用Random ra=new Random();(系统自动选取当前时前作随机种子)呢?用系统时间做随机种子并不保险,如果应用程序在一个较快的计算机上运行,则该计算机的系统时钟可能没有时间在此构造函数的调用之间进行更改,Random 的不同实例的种子值可能相同。这种情况下,我们就需要另外的算法来保证产生的数字的随机性。所以为了保证产生的随机数足够随机,我们不得不使用复杂一点的方法来获得随机种子。在上面的这段程序中,我们首先使用系统时间作为随机种子,然后将上一次产生的随机数跟循环变量和一个与系统时间有关的整型参数相乘,以之作为随机种子,从而得到了每次都不同的随机种子,保证了产生足够随机的随机数。函数getNum是一递归,用它来检测生成的随机数是否有重复,如果取出来的数字和已取得的数字有重复就重新随机获取。值得注意的是要用一同一个随机数实例生成,所以ra要作为参数传入getNum中,否则生成的数字会有重复。public int getNum(int arrNum,int tmp,int minValue,int maxValue,Random ra)int n=0;while (n=arrNum.Length-1)if (arrNumn=tmp) /利用循环判断是否有重复tmp=ra.Next(minValue,maxValue); /重新随机获取。getNum(arrNum,tmp,minValue,maxValue,ra);/递归:如果取出来的数字和已取得的数字有重复就重新随机获取。n+;return tmp;最后就是要显示出来,当点击一个button时取出的数字显示在一个label中。private void button1_Click(object sender, System.EventArgs e)int arr=getRandomNum(6,1,20);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沈阳理工大学《构成艺术》2021-2022学年第一学期期末试卷
- 沈阳理工大学《单片机原理与接口技术》2021-2022学年期末试卷
- 广东省预拌混凝土买卖合同
- 孩子上学购房合同摘抄表
- 合同变更及终止管理办法
- 2024-2025学年高中政治第四单元认识社会与价值选择11.2社会历史的主体作业含解析新人教版必修4
- 2024《秦皇岛市劳动合同》
- 2024年泰安客运资格证模拟考试题
- 2024工程桩基检测合同书
- 第23课《黄继光》第一课时(分层作业)-【上好课】四年级语文下册部编版
- 天津市2024-2025学年高一上学期11月期中考试 化学试题(无答案)
- 养老院膳食营养保障方案
- 陕西省汉中市勉县第二中学2024-2025学年高二上学期11月期中考试政治试题
- 2024年中国酱香型习酒市场调查研究报告
- 质量管理工程师(QA工程师)岗位招聘笔试题与参考答案
- 河北省邢台市2023-2024学年八年级上学期期中数学试题(解析版)
- 安全生产治本攻坚三年行动方案(2024-2026)
- Unit 3 Toys Lesson 1(教学设计)-2024-2025学年人教精通版(2024)英语三年级上册
- 2024年秋初中物理八年级上册教学设计(教案)第5节 跨学科实践:制作望远镜
- 分级阅读The Fantastic Washing Machine 洗衣机超人 教学设计-2023-2024学年牛津译林版英语七年级下册
- 2025高考物理步步高同步练习必修3学习笔记第十三章 电磁感应与电磁波初步磁场 磁感线
评论
0/150
提交评论