1. 程式人生 > >C#生成互不相同隨機數的實現方法

C#生成互不相同隨機數的實現方法

adding 定義 是否 point byte 設計 amp 發生器 fff

本文實例講述了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#程序設計有一定的借鑒價值。

除聲明外,跑步客文章均為原創,轉載請以鏈接形式標明本文地址
C#生成互不相同隨機數的實現方法

本文地址: http://www.paobuke.com/develop/c-develop/pbk23564.html






相關內容

技術分享C#深度優先搜索算法技術分享C#實現Base64處理的加密解密,編碼解碼示例技術分享C#中利用LINQ to XML與反射把任意類型的泛型集合轉換成XML格式字符串的方法技術分享C#遠程獲取圖片文件流的方法
技術分享C#導出網站功能實例代碼講解技術分享C#模式畫刷HatchBrush用法實例技術分享C#根據反射和特性實現ORM映射實例分析技術分享C#自定義函數NetxtString生成隨機字符串

C#生成互不相同隨機數的實現方法