函數(shù)名: rand
站在用戶的角度思考問題,與客戶深入溝通,找到?jīng)鲋菥W(wǎng)站設(shè)計與涼州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋涼州地區(qū)。
功 能: 隨機數(shù)發(fā)生器
用 法: void rand(void);
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
int i;
printf("Ten random numbers from 0 to 99\n\n");
for(i=0; i10; i++)
printf("%d\n", rand() % 100);
return 0;
}
這樣產(chǎn)生的隨機數(shù)為偽隨機數(shù),如果要產(chǎn)生隨機數(shù),可以在前面加一個隨機種子,srand(time(0)); time(0)返回的是系統(tǒng)的時間(從1970.1.1午夜算起)的總秒數(shù),單位:秒
#include stdlib.h
#include stdio.h
#include time.h
int main(void)
{
srand(time(0));
int i;
printf("Ten random numbers from 0 to 99\n\n");
for(i=0; i10; i++)
printf("%d\n", rand() % 100);這樣就產(chǎn)生了0到99的隨機數(shù)(隨機數(shù)對100取余的結(jié)果)
return 0;
}
可以自己試試,沒加隨機種子時候,rand()%100每次產(chǎn)生的數(shù)都是一樣的,而加了srand(time(0))效果就不同了。
通過敲代碼實驗,并且參考以下網(wǎng)址
隨機函數(shù)就是產(chǎn)生數(shù)的函數(shù),c語言里有rand(),srand()等函數(shù)。
用法
#include
#include
#include
void main( void )
{
int i,k;
srand( (unsigned)time( NULL ) ); //用系統(tǒng)時間當種子,對隨機函數(shù)進行初始化
for( i = 0; i 10;i++ )
{
k=rand()%100; //產(chǎn)生各個隨機數(shù)
printf( " k=%d/n", k );
}
}
詳述
rand() srand() 頭文件為#include
標準C庫中函數(shù)rand()可以生成0~RAND_MAX之間的一個隨機數(shù),其中RAND_MAX 是stdlib.h 中定義的一個整數(shù),它與系統(tǒng)有關(guān)。
rand()函數(shù)沒有輸入?yún)?shù),直接通過表達式rand()來引用,rand()%n是產(chǎn)生的隨機數(shù)對n取余,起到了取0到n-1之間隨機數(shù)的作用;
例如可以用下面的語句來打印兩個隨機數(shù): printf("Random numbers are: %i %i/n",rand(),rand());
因為rand()函數(shù)是按指定的順序來產(chǎn)生整數(shù),而未指定運行的種子,所以rand()每次使用的都是同一個種子來產(chǎn)生隨機數(shù)序列,因此每次執(zhí)行上面的語句都打印相同的兩個值,所以說C語言的隨機并不是正真意義上的隨機。
為了時程序在每次執(zhí)行時都能生成一個新序列的隨機值,我們通常通過為隨機數(shù)生成器提供一粒新的隨機種子。函數(shù) srand()(來自stdlib.h)可以為隨機數(shù)生成器播散種子。只要種子不同rand()函數(shù)就會產(chǎn)生不同的隨機數(shù)序列。srand()稱為隨機數(shù)生成器的初始化器。
srand( (unsigned)time( NULL ) ); 用系統(tǒng)時間當種子,對隨機函數(shù)進行初始化,每次的系統(tǒng)時間不同,所以種子也就不同,產(chǎn)生的隨機數(shù)序列也就不同。
任何程序都會用到stdio.h,所以這個跟隨機數(shù)函數(shù)沒多大關(guān)系,stdlib.h包含的是隨機數(shù)函數(shù)rand() 和隨機數(shù)函數(shù) srand(seed) 這兩個通常配套使用,srand(seed)意思是置一個隨機數(shù)種子,然后調(diào)用rand()函數(shù)得到一個-90~32767之間的整數(shù),置種子的時候我們要求種子是不一樣的,否則每次用rand()函數(shù)都會得到相同的結(jié)果。由于時間每一秒都會發(fā)生變化,因此我們選擇用時間作為隨機數(shù)種子,去實踐的函數(shù)time()就包含在time.h頭文件里,所以我們要用到time.h這個頭文件。
給個例子
我要隨即輸出一個整數(shù)
#include
#include
#include
void main()
{
int i;
srand(time(NULL));//置隨機數(shù)種子,沒有這句也能運行,但是多次運行這個程序的時候,隨后用rand()得到的數(shù)字會相同
i=rand();用rand()函數(shù)獲得隨機數(shù),然后賦給不變量i
printf("%d",i);
}
srand()函數(shù)是C語言中產(chǎn)生隨機數(shù)的一個函數(shù)。
函數(shù)原型: void srand(unsigned seed)
功 ? ? ?能: 產(chǎn)生隨機數(shù)的起始發(fā)生數(shù)據(jù),和rand函數(shù)配合使用
頭 文 ?件: stdlib.h ? time.h
舉例如下:
#include?stdio.h
#include?stdlib.h
#include?time.h
int?main(void)
{
int?i;
time_t?t;
srand((unsigned)?time(t));
printf("Ten?random?numbers?from?0?to?99\n\n");
for?(i=0;?i10;?i++)
printf("%d\n",?rand()%100);
return?0;
}
運行程序,會發(fā)現(xiàn)每次產(chǎn)生的隨機數(shù)都不一樣。這是因為這里采用了時間作為種子,而時間在每時每刻都不相同,所以就產(chǎn)生了"隨機"的隨機數(shù)了。所以,要想產(chǎn)生不同的隨機數(shù),在使用rand之前需要先調(diào)用srand。