rand函式

rand函式

rand函式不是真正的隨機數生成器,而srand()會設定供rand()使用的隨機數種子。如果你在第一次調用rand()之前沒有調用srand(),那么系統會為你自動調用srand()。而使用同種子相同的數調用 rand()會導致相同的隨機數序列被生成。

基本介紹

  • 中文名:rand函式
  • 類型:專有名詞
  • 領域:程式語言
  • 所屬C語言
C語言,Excel,PHP,定義和用法,語法,說明,提示和注釋,例子,

C語言

srand((unsigned)time(NULL))則使用系統定時/計數器的值作為隨機種子。每個種子對應一組根據算法預先生成的隨機數,所以,在相同的平台環境下,不同時間產生的隨機數會是不同的,相應的,若將srand(unsigned)time(NULL)改為srand(TP)(TP為任一常量),則無論何時運行、運行多少次得到的“隨機數”都會是一組固定的序列,因此srand生成的隨機數是偽隨機數。
rand函式
庫函式中系統提供了兩個函式用於產生隨機數:srand()和rand()。 原型為:
函式一:int rand(void);
返回一個[0,RAND_MAX]間的隨機整數。
函式二:void srand(unsigned seed);
參數seed是srand()的種子,用來初始化srand()的起始值。
但是,要注意的是所謂的“偽隨機數”指的並不是假的隨機數。其實絕對的隨機數只是一種理想狀態的隨機數,計算機只能生成相對的隨機數即偽隨機數。計算機生 成的偽隨機數既是隨機的又是有規律的 —— 一部份遵守一定的規律,一部份則不遵守任何規律。比如“世上沒有兩片形狀完全相同的樹葉”,這體現到了事物的特性 —— 差異性;但是每種樹的葉子都有近似的形狀,這正是事物的共性 —— 規律性。從這個角度講,我們就可以接受這樣的事實了:計算機只能產生偽隨機數而不是絕對的隨機數。
系統在調用rand()之前都會自動調用srand(),如果用戶在rand()之前曾調用過srand()給參數seed指定了一個值,那么 rand()就會將seed的值作為產生偽隨機數的初始值;而如果用戶在rand()前沒有調用過srand(),那么系統默認將1作為偽隨機數的初始 值。如果給了一個定值,那么每次rand()產生的隨機數序列都是一樣的~~
所以為了避免上述情況的發生我們通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))來 產生種子。如果仍然覺得時間間隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)後面乘上某個合適的整數。 例如,srand((unsigned)time(NULL)*10)
另外,關於time_t time(0):time_t被定義為長整型,它返回從1970年1月1日零時零分零秒到目前為止所經過的時間,單位為秒。
srand()、rand()用法舉例:
#include<time.h>#include<stdlib.h>#include<stdio.h>int main(){int i,j;srand((int)time(0));for(i=0;i<10;i++){j=1+(int)(10.0*rand()/(RAND_MAX+1.0));printf("%d",j);}}

Excel

基本用法2003版以上的Excel中,直接在單元格輸入=RAND()
得到大於等於0,小於1的隨機數
其他變形生成方法:
①生成A與B之間的隨機數字(A隨機數<B)
在第一個格子中輸入:=RAND()*(B-A)+A
如,生成1到10之間的隨機數字,輸入:=RAND()*9+1
其餘數字,將滑鼠置於該格子右下角,變為十字時,向下拖拉即可。
②生成A與B之間的隨機整數(A隨機數<B)
在第一個格子中輸入:=INT(RAND()*(B-A)+A)
如,生成1到10之間的隨機整數,輸入:=INT(RAND()*9+1)
其餘數字,將滑鼠置於該格子右下角,變為十字時,向下拖拉即可。
生成AB之間的隨機數字A≤隨機數≤B
在第一個格子中輸入:=RAND()*(B-A+1)+A
如,生成1到100的隨機數字,輸入:=RAND()*100+1
但這個公式會出現大於B的數字,例如生成-12到12的隨機數,例如公式=RAND()%(12+12+1)-12,當RAND生成為0.99的數值時,就會產生12.75的數字。
其餘數字,將滑鼠置於該格子右下角,變為十字時,向下拖拉即可。
生成AB之間的隨機整數(A≤隨機數≤B
在第一個格子中輸入:=INT(RAND()*(B-A+1)+A)
如,生成1到100的隨機整數,輸入:= INT(RAND()*100)+1
其餘數字,將滑鼠置於該格子右下角,變為十字時,向下拖拉即可。
⑤若是20072010版,生成AB之間的隨機整數(A≤隨機數≤B
在第一個格子中輸入:=RANDBETWEEN(A,B)即可。
如,生成1到10之間的隨機整數,輸入:=RANDBETWEEN(1,10)
如想得到隨機小數,則輸入:=RANDBETWEEN(1,100)/10

PHP

定義和用法

rand() 函式返回隨機整數。

語法

rand(min,max)
參數
描述
min
最小值(包括)。可選。規定隨機數產生的範圍。
max
最大值(包括)。可選。規定隨機數產生的範圍。

說明

如果沒有提供可選參數 minmax,rand() 返回 0 到 RAND_MAX 之間的偽隨機整數。例如,想要 5 到 15(包括 5 和 15)之間的隨機數,用 rand(5, 15)。

提示和注釋

注釋:在某些平台下(例如 Windows)RAND_MAX 只有 32768。如果需要的範圍大於 32768,那么指定 min 和 max 參數就可以生成大於 RAND_MAX 的數了,或者考慮用 mt_rand() 來替代它。

例子

輸入:
<?phpecho(rand();echo(rand();echo(rand(10,100))?>
輸出:

相關詞條

熱門詞條

聯絡我們