隨機函數(shù)就是產生數(shù)的函數(shù),c語言里有rand(),srand()等函數(shù)。
成都創(chuàng)新互聯(lián)公司是一家集網站建設,桃源企業(yè)網站建設,桃源品牌網站建設,網站定制,桃源網站建設報價,網絡營銷,網絡優(yōu)化,桃源網站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網站。
用法
#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; //產生各個隨機數(shù)
printf( " k=%d/n", k );
}
}
詳述
rand() srand() 頭文件為#include
標準C庫中函數(shù)rand()可以生成0~RAND_MAX之間的一個隨機數(shù),其中RAND_MAX 是stdlib.h 中定義的一個整數(shù),它與系統(tǒng)有關。
rand()函數(shù)沒有輸入參數(shù),直接通過表達式rand()來引用,rand()%n是產生的隨機數(shù)對n取余,起到了取0到n-1之間隨機數(shù)的作用;
例如可以用下面的語句來打印兩個隨機數(shù): printf("Random numbers are: %i %i/n",rand(),rand());
因為rand()函數(shù)是按指定的順序來產生整數(shù),而未指定運行的種子,所以rand()每次使用的都是同一個種子來產生隨機數(shù)序列,因此每次執(zhí)行上面的語句都打印相同的兩個值,所以說C語言的隨機并不是正真意義上的隨機。
為了時程序在每次執(zhí)行時都能生成一個新序列的隨機值,我們通常通過為隨機數(shù)生成器提供一粒新的隨機種子。函數(shù) srand()(來自stdlib.h)可以為隨機數(shù)生成器播散種子。只要種子不同rand()函數(shù)就會產生不同的隨機數(shù)序列。srand()稱為隨機數(shù)生成器的初始化器。
srand( (unsigned)time( NULL ) ); 用系統(tǒng)時間當種子,對隨機函數(shù)進行初始化,每次的系統(tǒng)時間不同,所以種子也就不同,產生的隨機數(shù)序列也就不同。
完全不同。。。。
rand()是隨機函數(shù)
,取數(shù)用的
srand()是隨機種子函數(shù),決定
rand()的隨機值
電腦沒有真正意義上的隨機數(shù)
,如果沒有srand()
每次
rand()的值都是相同的
rand()產生一個0~32767之間的偽隨機數(shù)。而srand(unsigned t)是為rand()產生偽隨機數(shù)下一個“種子”。所謂“種子”就是給偽隨機發(fā)生器賦一個初值,因為如果初值一樣,后面產生的偽隨機數(shù)的規(guī)律也就一樣,達不到“隨機”的目的。所以srand(unsigned t)一般是用機中的實時時間來啟動的,因為實時時間的值每時每刻都在變化,這樣啟動的rand()函數(shù)產生的偽隨機數(shù)序列就能達到以假亂真的效果。