怎樣用c語言取隨機數,怎樣用c語言取一個隨機數

時間 2021-12-25 10:23:56

1樓:誰把誓言換流年

例如:#include

int i;

i=rand()%10;

就是取0到10(不包括10)之間的隨機數

2樓:管罡

hutuchong580

具體**如下:

#include

#include

#include //用到了time函式

int main()

return 0;

}有以下幾種情況:

(1) 如果只要產生隨機數而不需要設定範圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 範圍在0至rand_max 間。rand_max定義在stdlib.

h, 其值為2147483647。

(2) 如果你要隨機生成一個在一定範圍的數,你可以在巨集定義中定義一個random(int number)函式,然後在main()裡面直接呼叫random()函式:

例如:rand()%100是產生0-99的隨機數。01

3樓:go陌小潔

具體**如下:

#include

#include

#include //用到了time函式

int main()

return 0;

}有以下幾種情況:

(1) 如果只要產生隨機數而不需要設定範圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 範圍在0至rand_max 間。rand_max定義在stdlib.

h, 其值為2147483647。

(2) 如果你要隨機生成一個在一定範圍的數,你可以在巨集定義中定義一個random(int number)函式,然後在main()裡面直接呼叫random()函式:

例如:rand()%100是產生0-99的隨機數。

c語言中獲得隨機數的方法

4樓:匿名使用者

c語言/c++怎樣產生隨機數:這裡要用到的是rand()函式, srand()函式,c語言/c++裡沒有自帶的random(int number)函式。

(1) 如果你只要產生隨機數而不需要設定範圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 範圍在0至rand_max 間。rand_max定義在stdlib.

h, 其值為2147483647。

例如:#include

#include

void main()

(2) 如果你要隨機生成一個在一定範圍的數,你可以在巨集定義中定義一個random(int number)函式,然後在main()裡面直接呼叫random()函式:例如:隨機生成10個0~100的數:

#include

#include

#define random(x) (rand()%x)

void main()

(3)但是上面兩個例子所生成的隨機數都只能是一次性的,如果你第二次執行的時候輸出結果仍和第一次一樣。這與srand()函式有關。srand()用來設定rand()產生隨機數時的隨機數種子。

在呼叫rand()函式產生隨機數前,必須先利用srand()設好隨機數種子(seed), 如果未設隨機數種子, rand()在呼叫時會自動設隨機數種子為1。上面的兩個例子就是因為沒有設定隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。srand()函式定義 :

void srand (unsigned int seed);

通常可以利用geypid()或time(0)的返回值來當做seed

如果你用time(0)的話,要加入標頭檔案#include例如:

#include

#include

#include

#define random(x) (rand()%x)

void main()

這樣兩次執行的結果就會不一樣了!!

5樓:

問題1: 怎樣獲得一個真正的隨機數?要知道,rand()是不能產生真正的隨機數的!即使不能產生真正的隨機數,也要大概接近呀!而rand()好象每次的隨機都一樣。

專家解答:

之所以rand()每次的隨機數都一樣是因為rand()函式使用不正確。各種程式語言返回的隨機數(確切地說是偽隨機數)實際上都是根據遞推公式計算的一組數值,當序列足夠長,這組數值近似滿足均勻分佈。如果計算偽隨機序列的初始數值(稱為種子)相同,則計算出來的偽隨機序列就是完全相同的。

這個特性被有的軟體利用於加密和解密。加密時,可以用某個種子數生成一個偽隨機序列並對資料進行處理;解密時,再利用種子數生成一個偽隨機序列並對加密資料進行還原。這樣,對於不知道種子數的人要想解密就需要多費些事了。

當然,這種完全相同的序列對於你來說是非常糟糕的。要解決這個問題,需要在每次產生隨機序列前,先指定不同的種子,這樣計算出來的隨機序列就不會完全相同了。你可以在呼叫rand()函式之前呼叫srand( (unsigned)time( null ) ),這樣以time函式值(即當前時間)作為種子數,因為兩次呼叫rand函式的時間通常是不同的,這樣就可以保證隨機性了。

你也可以使用srand函式來人為指定種子數。windows 9x/nt的遊戲freecell就允許使用者指定種子數,這樣使用者如果一次遊戲沒有成功,下次還可以以同樣的發牌結果再玩一次。

問題2: 我按照上述方法並不能產生隨機數,僅產生公差為3或4的等差數列:

#include

#include

#include

#include

void main() }

專家解答:

你的程式是有問題的,你每產生一個隨機數之前,都呼叫一次srand,而由於計算機執行很快,所以你每次用time得到的時間都是一樣的(time的時間精度較低,只有55ms)。這樣相當於使用同一個種子產生隨機序列,所以產生的隨機數總是相同的。你應該把srand放在迴圈外:

srand( (unsigned)time( null ) );

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

6樓:風若遠去何人留

可以使用庫函式rand()。

rand宣告於stdlib.h,其原型為

int rand(void);

功能為返回一個隨機整型值。在c語言中,該值是一個正數值。

在需要限定獲取到的隨機數範圍時,如範圍要求為[m,n] m

rand()%(n-m+1)+m

的形式進行獲取。原理為:

%為取餘計算,當%k時,結果是[0,k-1]之間的數值;

於是rand()%(n-m+1) ∈ [0, n-m];

所以rand()%(n-m+1)+m ∈ [0+m, n-m+m]=[m,n]。

7樓:匿名使用者

用隨機數函式要區分程式設計環境。tc和vc(vc代表win32編譯器)是不同的。tc下用以下兩個函式初始化隨機數產生器void randomize(void)產生隨機數(max表示 產生從0~max-1的隨機數)

int random(int max)例子:int main()vc下也有兩個函式 srand(unsigned long seed) 用於初始化隨機數,引數為隨機數種子,一般使用當前時間作為隨機數種子。 unsigned long rand(void)返回一個隨機數,範圍可用取餘運算控制。

例子:#include int main()

8樓:匿名使用者

在vc中設計到隨機數有兩個函式

srand() and rand()

srand() 的作用是是一個種子,提供每次獲得隨機數的基數而已,rand()根據種子而產生隨機數

注意1:srand() 裡的值必須是動態變化的,否則得到的隨機數就是一個固定數

2:其實可以不用寫srand() ,只用rand()就可以了,省事,簡單,例子如下

如果我們想得到一個 0-60的隨機數那麼可以寫成int i;

i=rand()%60;

就可以了。

當然最好有個統一的標註如下:

int i;

srand((unsigned)time( null ));

i=rand()%60;

這樣就ok了。

9樓:仙桖珍

c語言生成隨機數需要用到兩個函式,一個是srand(),一個是rand(),首先給srand()提供一個種子,unsigned int型別,其取值範圍從0~65535,srand()根據這個種子會由一個特定的公式生成一個隨機數序列;然後呼叫rand(),它會依次從這個序列中返回一個數(在0到32767之間),而在不指定srand()種子的情況下,它每次都使用預設的種子,因此生成的序列是同一個,你每次執行,當然就取到相同的數字了。

你可以在程式裡新增標頭檔案time.h,用當前時間作為srand的種子,這樣就能保證每次執行時都能取到不同的隨機數序列。如下:

time_t t;

srand((unsigned) time(&t));

然後就可以用rand()取隨機數了。

c語言如何srand和rand函式產生10個1-100內的隨機數

10樓:幻翼高達

需要準備的材料分別有:電腦、c語言

編譯器。

1、首先,開啟c語言編譯器,新建一個初回始.cpp檔案,例如答:test.cpp。

2、在test.cpp檔案中,輸入c語言**:

for (int i = 0; i < 10; i++)printf("%d ", rand() % 100 +1);

3、編譯器執行test.cpp檔案,此時成功通過rand產生了10個1-100內的整數。

11樓:匿名使用者

先用抄srand函式設定一個

種子,一般為襲當前時間,然後使用bairand函式產生隨機du數zhi

,如產生a~b的隨機數使用表示式rand()%(b-a+1)+a。

注意dao:srand函式在標頭檔案#include 中。

示例**:

#include

#include

#include

int main()

//列印生成的隨機數

for (i = 0; i < 10; ++i)printf ("\n");

return 0;}

12樓:匿名使用者

這就是關於程式設計的一些內容,現在呢科技發達了沒有,今後這個如果不會變成的話,可能連工作都找不到。

13樓:匿名使用者

#include

#include

#include

#define n 10

#define m1 1

#define m2 100

void main()

if(i==n)break;

} printf("\n");}

c中怎樣用Random求是個不同的隨機數

random rd new random int i rd.next 0,9 0,9是隨機數範圍,自己定義 你這個問題是不是random生成的隨機數都是一樣的?如果是這個問題 你可以將random的物件設成全域性靜態變數,就是加個static修飾符。然後在函式中呼叫物件的randnext方法即可生成...

c語言中取隨機數的函式,C語言中取隨機數的函式

韌勁 1.基本函式 在c語言中取隨機數所需要的函式是 int rand void void srand unsigned int n rand 函式和srand 函式被宣告在標頭檔案stdlib.h中,所以要使用這兩個函式必須包含該標頭檔案 include 2.使用方法 rand 函式返回0到ran...

怎樣用ecel軟體做隨機分組,怎樣用excel軟體做隨機分組

簡淨軒語 可以使用rand函式生成隨機序號,然後再按照隨機序號分組。在想要分組的資料旁邊使用輔助列,列標題為隨機序號,並輸入公式 round rand 10 1 1,這樣每一條記錄都有一個隨機序號,然後再通過篩選或者資料透視表的方法實現分組。需要提醒的是,rand函式為隨機數,按下f9會重新整理資料...