C#產生指定數目的互不相同的隨機數

來源:互聯網
上載者:User
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; 

}  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.