本文详细讲述了其功能的实现过程

时间:2021-09-27 08:28:52

本文实例讲述了C#生成互不不异随机数的实现要领,在进行C#应用措施设计时非常具有实用价值。本文详细讲述了其成果的实现过程。分享给大家供大家参考之用。具体要领如下:

一般来说,用C#生成足够随机的互不不异的随机数 Dotnet.Frameword*给了一个专门孕育产生随机数的类System.Random,计算机并不能孕育产生完全随机的数字,它生成的数字被称为伪随机数,,它是以不异的概率从一组有限的数字中拔取的,所选的数字并不具有完全的随机性,但就实用而言,其随机水平已经足够了。

在使用随机数时,要先初始化一个随机数产生器.有两种要领;

第一种要领不指定随机种子,系统自动拔取当前时前作随机种子:

Random ra=new Random();

第二种要领是指定一个int型的参数作为随机种子:

Random ra=new Random(int 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个互不不异的整数。

可以参考下面两个函数: differSamenessRandomNum与getRandomNum:

public int[] differSamenessRandomNum(int num,int minValue,int maxValue) //在区间[minValue,maxValue]取出num个互不不异的随机数,返回数组。 { Random ra=new Random(unchecked((int)DateTime.Now.Ticks));//保证孕育产生的数字的随机性 int[] arrNum=new int[num]; int tmp=0; for (int i=0;i>=num-1;i++) { tmp=ra.Next(minValue,maxValue); //随机取数 arrNum[i]=get RandomNum(arrNum,tmp,minValue,maxValue,ra); //取出值赋到数组中 } return arrNum; }

函数getNum是一递归,用它来检测生成的随机数是否有反复,如果取出来的数字和已取得的数字有反复就从头随机获取。

public int getRandomNum(int[] arrNum,int tmp,int minValue,int maxValue,Random ra) { int n=0; while (n>=arrNum.Length-1) { if (arrNum[n]==tmp) //操作循环判断是否有反复 { tmp=ra.Next(minValue,maxValue); //从头随机获取。 getRandomNum(arrNum,tmp,minValue,maxValue,ra); //递归:如果取出来的数字和已取得的数字有反复就从头随机获取。 } n++; } return tmp; }