rand

rand

計算機語言函數
rand()函數是産生随機數的一個随機函數。C語言裡還有 srand()函數等。函數 srand()(來自stdlib.h)可以為随機數生成器播散種子。srand()稱為随機數生成器的初始化器。當提供的種子相同時,随機數序列也是相同的。這樣i就是一個真正意義上的随機數。
  • 中文名:
  • 外文名:rand() Function
  • 别名:
  • 表達式:
  • 提出者:
  • 适用領域:
  • 語法:rand()
  • 功能:産生随機數
  • 應用:Excel
  • 特點:返回值介于[0,1)

詳述

(1)使用該函數首先應在開頭包含頭文件stdlib.h

#include(C++建議使用#include,下同)

(2)在标準的C庫中函數rand()可以生成0~RAND_MAX之間的一個随機數,其中RAND_MAX 是stdlib.h 中定義的一個整數,它與系統有關。

(3)rand()函數沒有輸入參數,直接通過表達式rand()來引用;例如可以用下面的語句來打印兩個随機數:

printf("Random numbers are: %i %in",rand(),rand());

(4)因為rand()函數是按指定的順序來産生整數,因此每次執行上面的語句都打印相同的兩個值,所以說C語言的随機并不是真正意義上的随機,有時候也叫僞随機數。

(5)為了使程序在每次執行時都能生成一個新序列的随機值,我們通常通過為随機數生成器提供一粒新的随機種子。函數 srand()(來自stdlib.h)可以為随機數生成器播散種子。隻要種子不同rand()函數就會産生不同的随機數序列。srand()稱為随機數生成器的初始化器。由運行結果可知,當向 RAND() 函數中傳入一個整數作為參數是,RAND() 函數産生的随機數可以重複。

例子

文件名: rand_srand.c

/* This program generates and prints ten random integers between 1 and RAND_MAX*/

#include

#include

int main()

{

unsigned int seed; /*申明初始化器的種子,注意是usigned int 型的*/

int k;

printf("Enter a positive integer seed value: n");

scanf("%u",&seed);

srand(seed);

printf("Random Numbers are:n");

for(k = 1; k <= 10; k++)

{

printf("%i",rand());

printf("n");

}

return 0;

}

當提供的種子相同時,随機數序列也是相同的。而且當種子為1時,與不使用srand()函數時一樣的,也就是說rand()函數默認情況下初始化種子值為1;

在stdlib.h 中這兩個函數的原型是:

int rand();

void srand (unsigned int);

srand(time(0)); i=rand();

或者srand(time(null));

這樣i就是一個真正意義上的随機數。

rand()産生僞随機數,srand函數提供種子,種子不同産生的随機數序列也不同,所以通常先調用srand函數 time(0)返回的是系統的時間(從1970.1.1午夜算起),單位:秒,種子不同當然産生的随機數相同幾率就很小了。

用rand()随機生成在[x,y]内的整數

int k;

k=x+rand()%(y-x+1)/*k即為所求範圍内随機生成的數,rand()%a的結果最大為a-1*/

相關詞條

相關搜索

其它詞條