C#生成互不雷同隨機數的完成辦法。本站提示廣大學習愛好者:(C#生成互不雷同隨機數的完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#生成互不雷同隨機數的完成辦法正文
本文實例講述了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; }
信任本文所述對年夜家的C#法式設計有必定的自創價值。