C語言中的rand 函式

2021-10-06 09:11:22 字數 1579 閱讀 2404

rand函式,c語言中用來產生乙個隨機數的函式。

rand函式界限:stdlib.h標頭檔案中有巨集#define rand_max 0x7fff

rand產生乙個0-0x7fff的隨機數,即最大是32767的乙個數

rand函式原型

#include

int rand(void);

rand函式呼叫

srand函式

srand函式是隨機數發生器的初始化函式,原型:

void srand(unsigned int seed);

這個函式需要提供乙個種子,如srand(1),用1來初始化種子

rand()產生隨機數時,如果用srand(seed)播下種子之後,一旦種子相同(下面的getpid方法),產生的隨機數將是相同的。當然很多時候刻意讓rand()產生的隨機數隨機化,用時間作種子 srand(time(null)),這樣每次執行程式的時間肯定是不相同的,產生的隨機數肯定就不一樣了。

我們常常使用系統時間來初始化,使用time函式來獲取系統時間,得到的值是乙個時間戳,即從2023年1月1日0點到現在時間的秒數,然後將得到的time_t型別資料轉化為(unsigned int)的數,然後再傳給srand函式,用法如下:

srand((unsigned int)time(null));//我們在使用rand和srand時,主要使用的就是這一種初始化方法!!

如果仍然覺得時間間隔太小,可以在(unsigned)time(0)或者(unsigned)time(null)後面乘上某個合適的整數。 例如,srand((unsigned)time(null)*10)

time的引數傳null表示不需要經過引數獲得到的time_t資料,time函式原型如下

time_t time(time_t *tloc);//time_t型別被定義為乙個長整型

還有另外一種初始化種子的方式如下,用程序的pid作為種子值seed,在同乙個程式中,這樣的種子的值是相同的

srand((unsigned int)getpid())

rand函式的使用    

如果想要表示乙個數是從0開始到最大值的,比如說,想要產生乙個0-99之間的隨機數,那麼用法如下

int num = rand() % 100;

如果想要產生乙個數是從1開始到最大值的,比如說,想要產生乙個1-100之間的隨機數,那麼用法如下

int num = rand() % 100 + 1;

需要注意最後+1和不+1的區別,+1的最小值是1,不+1的最小值是0下面來看看rand()和srand()的具體例子,這裡我們主要看看種子的初始化方式的不同帶來的差異

#include #include #include int main()

printf("\n");

return 0;

}

下面的**每次執行程式生成的隨機值都是一樣的

#include #include #include #include int main()

printf("\n");

return 0;

}

C語言中rand函式

rand函式功能為獲取乙個偽隨機數 偽隨機數的概念下面會有介紹 一 函式名 rand 二 宣告 int rand 三 所在標頭檔案 stdlib.h 四 功能 返回乙個偽隨機數。之所以說是偽隨機數,是因為在沒有其它操作下,每次執行同乙個程式,呼叫rand得到的隨機數序列是固定的 不是真正的 隨機 五...

c語言中的rand 函式用法

rand 函式作用 用來產生隨機數,但是,rand 的內部實現是用線性同餘法實現的,是偽隨機數,由於週期較長,因此在一定範圍內可以看成是隨機的。rand 函式返回 返回乙個範圍在0到rand max 32767 之間的偽隨機數 整數 rand 函式標頭檔案 rand 函式原型 int rand vo...

C語言中的rand 函式和它的例項操作

c語言中的rand 函式,我是不怎麼用,不過正好碰上了,我就仔細研究了一下 一 首先,rand 函式在stdlib.h這個標頭檔案中 二 系統在呼叫rand 函式之前會自動呼叫srand 函式,而如果在函式體中未自定義srand 裡面的值的話,預設初始值為1,如果自定義srand 則括號裡面不能為空...