色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c語言rand函數

劉柏宏2年前15瀏覽0評論

c語言rand函數?

rand函數,C語言中用來產生一個隨機數的函數。

rand函數界限:stdlib.h頭文件中有宏#define rand_MAX 0x7fff

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

rand函數原型

#include <stdlib.h>

int rand(void);

rand函數調用

rand()函數每次調用前都會查詢是否調用過srand(seed),是否給seed設定了一個值,如果有那么它會自動調用srand(seed)一次來初始化它的起始值

若之前沒有調用srand(seed),那么系統會自動給seed賦初始值,即srand(1)自動調用它一次

srand函數

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

void srand(unsigned int seed);

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

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

我們常常使用系統時間來初始化,使用time函數來獲取系統時間,得到的值是一個時間戳,即從1970年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

java getnum,c語言rand函數