基本函式
在c語言中取隨機數所需要的函式是:
int rand(void);
void srand (unsigned int n);
rand()函式和srand()函式被宣告在標頭檔案stdlib.h中,所以要使用這兩個函式必須包含該標頭檔案:
#include
使用方法
rand()函式返回0到rand_max之間的偽隨機數(pseudorandom)。rand_max常量被定義在stdlib.h標頭檔案中。其值等於32767,或者更大。
srand()函式使用自變數n作為種子,用來初始化隨機數產生器。只要把相同的種子傳入srand(),然後呼叫rand()時,就會產生相同的隨機數序列。因此,我們可以把時間作為srand()函式的種子,就可以避免重複的發生。如果,呼叫rand()之前沒有先呼叫srand(),就和事先呼叫srand(1)所產生的結果一樣。
for (int i=0; i<10; i++)
每次執行都將輸出:1 7 4 0 9 4 8 8 2 4
srand(1);
for (int i=0; i<10; i++)
每次執行都將輸出:1 7 4 0 9 4 8 8 2 4
例2的輸出結果與例1是完全一樣的。
srand(8);
for (int i=0; i<10; i++)
每次執行都將輸出:4 0 1 3 5 3 7 7 1 5
該程式取得的隨機值也是在[0,10)之間,與srand(1)所取得的值不同,但是每次執行程式的結果都相同。
srand((unsigned)time(null));
for (int i=0; i<10; i++)
該程式每次執行結果都不一樣,因為每次啟動程式的時間都不同。另外需要注意的是,使用time()函式前必須包含標頭檔案time.h。
注意事項
①.求一定範圍內的隨機數。
如要取[0,10)之間的隨機整數,需將rand()的返回值與10求模。
randnumber = rand() % 10;
②.如果取的值不是從0開始呢?你只需要記住乙個通用的公式。
要取[a,b)之間的隨機整數(包括a,但不包括b),使用:
(rand() % (b - a)) + a
③.如果需要的隨機數在一定範圍,可以在巨集定義中定義乙個random(int number)函式,然後在main()裡面直接呼叫:
例如:隨機生成10個0~100的數:
#include
#include
#include
#define random(x) (rand()%x)
void main()
④.以上兩種方式產生的隨機數都是一次性的,如果你第二次執行的時候輸出結果仍和第一次一樣。連續產生不同的隨機數如下
例如:
#include
#include
#include
#define random(x) (rand()%x)
void main()
偽隨機浮點數。
要取得0~1之間的浮點數,可以用:
rand() / (double)(rand_max)
如果想取更大範圍的隨機浮點數,比如0~100,可以採用如下方法:
rand() /((double)(rand_max)/100)
C語言產生隨機數
c語言產生隨機數需要呼叫stdlib.h標頭檔案中的兩個函式 int rand void 產生乙個0到rand max之間的隨機整數。rand max定義在stdlib.h,其值為2147483647 void srand int seed 用於初始化種子,便於每次產生不同的隨機數。include ...
C語言產生隨機數
c語言中可以利用rand 函式產生偽隨機數,也可以使用srand 配合rand 一起使用獲得真隨機數。int rand void void srand unsigned int n include include include int main 使用rand 函式產生0 20偽隨機數 printf...
C語言產生隨機數
1.隨機數 數學上產生的都是偽隨機數,真正的隨機數是使用物理方法產生的。2.隨機數種子 隨機數的產生是由算術規則產生的,srand seed 的隨機數種子 seed 不同,rand 的隨機數值就不同,如果每次的seed一樣,則rand 產生的隨機數也將一樣。因此 要產生隨機數,seed也必須是隨機的...