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個互不相同的隨機數,返回陣列。
return arrnum;
} 函式getnum是一遞迴,用它來檢測生成的隨機數是否有重複,如果取出來的數字和已取得的數字有重複就重新隨機獲取。
public int getrandomnum(int arrnum,int tmp,int minvalue,int maxvalue,random ra)
{ int n=0;
while (n<=arrnum.length-1)
如何隨機生成指定數目的國標漢字?
為了使每乙個漢字有乙個全國統一的 1980年,我國頒布了第乙個漢字編碼的國家標準 gb2312 80 資訊交換用漢字編碼字符集 基本集,這個字符集是我國中文資訊處理技術的發展基礎,也是目前國內所有漢字系統的統一標準。由於國標碼是四位十六進製制,為了便於交流,大家常用的是四位十進位制的區位碼。所有的國...
生成互不相同隨機數的一種演算法
c 中常用rand 和srand 函式相結合來生成每次執行都不相同的一組隨機數,常見的寫法如下 cpp view plain copy include include include include using namespace std int tmain int argc,tchar argv ...
生成k個小於n的互不相同的隨機數
核心 讓每個數被選中的概率都為k n.隨機取出乙個數,剩下的裡面再取出乙個數,重複k次。方法一 利用洗牌的原理,將n個數 0至n 1 按次序排好,讓最後乙個數和乙個隨機 0 n 1 挑選出的位子進行互換,再讓倒數第2個數和 0 n 2 位置中挑選出來的位置進行互換,依次執行k次,陣列中的最後k個數就...