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

2021-12-29 20:59:39 字數 1326 閱讀 2286

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個數就...