程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#生成互不雷同隨機數的完成辦法

C#生成互不雷同隨機數的完成辦法

編輯:C#入門知識

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#法式設計有必定的自創價值。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved