在C中怎麼產生隨機數,且產生為0到1範圍的隨機數

2021-03-04 08:53:54 字數 5464 閱讀 5311

1樓:匿名使用者

給你個思抄

路random r = new random();

int i = r.next(minnum, maxnum);

想必你是想產生小數

襲,上面這個產生在minnum 和baimaxnum 間的一du個隨機int 數 如果要三位小數就

zhi先放大dao1000倍 再除以1000即: int i =r.next(0,1000);

float x= (float)i/1000 ; 就ok了

在c#中,怎麼產生乙個隨機數?

2樓:匿名使用者

.***.frameword中提供了乙個專門產生隨機數的類system.

random,此類預設情況下已被匯入,程式設計過程中可以直接使用。我們知道,計算機並不能產生完全隨機的數字,它生成的數字被稱為偽隨機數,它是以相同的概率從一組有限的數字中選取的,所選的數字並不具有完全的隨機性,但就實用而言,其隨機程度已經足夠了。

可以用以下兩種方法初始化乙個隨機數發生器;

函式是這樣用,比如100至999的隨機數

random ran=new random();

int randkey=ran.next(100,999);

不過這樣會有重複,可以給random乙個系統時間做為引數,以此產生隨機數,就不會重複了

第一種方法不指定隨機種子,系統自動選取當前時前作隨機種子:

random ra=new random();

第二種方法是指定乙個int型的引數作為隨機種子:

int iseed=6;

random ra=new random(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個互不相同的整數。

主要是下面兩個函式getrandomnum與getnum:

public int getrandomnum(int num,int minvalue,int maxvalue)

return arrnum;

}getrandomnum即是在區間[minvalue,maxvalue]取出num個互不相同的隨機數,返回的陣列包含著結果。

其中隨機數是這樣建立的 random ra=new random(unchecked((int)datetime.now.ticks));為什麼不用random ra=new random();(系統自動選取當前時前作隨機種子)

用系統時間做隨機種子並不保險,如果應用程式在乙個較快的計算機上執行,則該計算機的系統時鐘可能沒有時間在此建構函式的呼叫之間進行更改,random 的不同例項的種子值可能相同。這種情況下,我們就需要另外的演算法來保證產生的數字的隨機性。所以為了保證產生的隨機數足夠"隨機",我們不得不使用複雜一點的方法來獲得隨機種子。

在上面的這段程式中,我們首先使用系統時間作為隨機種子,然後將上一次產生的隨機數跟迴圈變數和乙個與系統時間有關的整型引數相乘,以之作為隨機種子,從而得到了每次都不同的隨機種子,保證了產生足夠"隨機"的隨機數。

函式getnum是一遞迴,用它來檢測生成的隨機數是否有重複,如果取出來的數字和已取得的數字有重複就重新隨機獲取。值得注意的是要用一同乙個隨機數例項生成,所以ra要作為引數傳入getnum中,否則生成的數字會有重複。

public int getnum(int arrnum,int tmp,int minvalue,int maxvalue,random ra)

n ;}

return tmp;

}最後就是要顯示出來,當點選乙個button時取出的數字顯示在乙個label中。

private void button1_click(object sender, system.eventargs e)

label1.text=temp; //顯示在label1中}

c#中,怎麼產生乙個隨機數?

3樓:匿名使用者

.***.frameword中提供了乙個專門產生隨機數的類system.

random,此類預設情況下已被匯入,程式設計過程中可以直接使用。我們知道,計算機並不能產生完全隨機的數字,它生成的數字被稱為偽隨機數,它是以相同的概率從一組有限的數字中選取的,所選的數字並不具有完全的隨機性,但就實用而言,其隨機程度已經足夠了。

可以用以下兩種方法初始化乙個隨機數發生器;

函式是這樣用,比如100至999的隨機數

random ran=new random();

int randkey=ran.next(100,999);

不過這樣會有重複,可以給random乙個系統時間做為引數,以此產生隨機數,就不會重複了

第一種方法不指定隨機種子,系統自動選取當前時前作隨機種子:

random ra=new random();

第二種方法是指定乙個int型的引數作為隨機種子:

int iseed=6;

random ra=new random(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個互不相同的整數。

主要是下面兩個函式getrandomnum與getnum:

public int getrandomnum(int num,int minvalue,int maxvalue)

return arrnum;

}getrandomnum即是在區間[minvalue,maxvalue]取出num個互不相同的隨機數,返回的陣列包含著結果。

其中隨機數是這樣建立的 random ra=new random(unchecked((int)datetime.now.ticks));為什麼不用random ra=new random();(系統自動選取當前時前作隨機種子)

用系統時間做隨機種子並不保險,如果應用程式在乙個較快的計算機上執行,則該計算機的系統時鐘可能沒有時間在此建構函式的呼叫之間進行更改,random 的不同例項的種子值可能相同。這種情況下,我們就需要另外的演算法來保證產生的數字的隨機性。所以為了保證產生的隨機數足夠"隨機",我們不得不使用複雜一點的方法來獲得隨機種子。

在上面的這段程式中,我們首先使用系統時間作為隨機種子,然後將上一次產生的隨機數跟迴圈變數和乙個與系統時間有關的整型引數相乘,以之作為隨機種子,從而得到了每次都不同的隨機種子,保證了產生足夠"隨機"的隨機數。

函式getnum是一遞迴,用它來檢測生成的隨機數是否有重複,如果取出來的數字和已取得的數字有重複就重新隨機獲取。值得注意的是要用一同乙個隨機數例項生成,所以ra要作為引數傳入getnum中,否則生成的數字會有重複。

public int getnum(int arrnum,int tmp,int minvalue,int maxvalue,random ra)

n ;}

return tmp;

}最後就是要顯示出來,當點選乙個button時取出的數字顯示在乙個label中。

private void button1_click(object sender, system.eventargs e)

label1.text=temp; //顯示在label1中}

4樓:mei_陳先生

這裡用迴圈來舉例

for(int i=0;i<10;i++)

這個例子會得到10個相同的隨機數,應迴圈完成的時間是非常短,所以根據系統時間作為種子算出的隨機數就會是一樣的。所以random迴圈只適用於要求比較低的情況。

c#是微軟公司釋出的一種物件導向的、執行於.*** framework之上的高階程式語言。並定於在微軟職業開發者論壇(pdc)上登台亮相。

c#是微軟公司研究員anders hejlsberg的最新成果。c#看起來與java有著驚人的相似;它包括了諸如單一繼承、介面、與java幾乎同樣的語法和編譯成中間**再執行的過程。但是c#與java有著明顯的不同,它借鑑了delphi的乙個特點,與***(元件物件模型)是直接整合的,而且它是微軟公司 .

*** windows網路框架的主角。

c#是一種安全的、穩定的、簡單的、優雅的,由c和c++衍生出來的物件導向的程式語言。它在繼承c和c++強大功能的同時去掉了一些它們的複雜特性(例如沒有巨集以及不允許多重繼承)。c#綜合了vb簡單的視覺化操作和c++的高執行效率,以其強大的操作能力、優雅的語法風格、創新的語言特性和便捷的面向元件程式設計的支援成為.

***開發的首選語言。

c#是物件導向的程式語言。它使得程式設計師可以快速地編寫各種基於microsoft .***平台的應用程式,microsoft .

***提供了一系列的工具和服務來最大程度地開發利用計算與通訊領域。

c#使得c++程式設計師可以高效的開發程式,且因可呼叫由 c/c++ 編寫的本機原生函式,因此絕不損失c/c++原有的強大的功能。因為這種繼承關係,c#與c/c++具有極大的相似性,熟悉類似語言的開發者可以很快的轉向c#。

c怎麼獲取隨機數C怎麼獲取隨機數

在開發過程中,常常要產生隨機數,如生成靜態 html 網頁時,檔名通常用產生隨機數的方式獲得,生成定單的時候,定單號也可以用產生隨機數的方式獲得等。在 c 中,一般都用 random 產生隨機數,它可任意指定產生隨機數範圍。random 結合陣列,可以產生一些特殊範圍的隨機數,以滿足特殊的需要。一 ...

怎麼用c 生成指定隨機數,在c 裡怎麼弄隨機數?

include include include using namespace std int main srand unsigned time null 初始化時間種子 int ret rand 3 產生 0 1 2 三種隨機數 int real pow 2,ret 2的0次方 1 2的1次方2 ...

為什麼crand函式產生的隨機數有相同的規律

rand本質上產生的是偽隨機數,不是真正意義上的隨機數。已知常見的幾種產生偽隨機數的演算法都是通過簡單的迭代遞推而產生,種子是決定性因素,乙個相同種子產生的後續每乙個偽隨機數是可以乙個個推算出來的。這也就是為什麼使用rand函式之前一定要先用srand給乙個比較隨機一些的種子先初始化,一般用系統時間...