close

PHP - rand() - 取亂數函式

rand函式
功能:
取得隨機亂數

使用:
$a=rand(最小值[整數],最大值[整數])

說明:
rand函式所傳回的資料型態為整數,會依據設計者傳入的最大值與最小值,傳回隨機亂數,可以同時不指定最大值與最小值,這個時候並不會出錯,此時會使用預設最大值getrandmax()=32767與預設最小值0做為基本判斷數值,也就是說rand()等於rand(0,32767),會傳回0到32767之間的數值。

其他重點:
1. rand函式可以接受的最大傳入值為整數的最大值:2147483647、最小值:-2147483648。(過大的數值會產生無法預知的錯誤[溢值])
2. rand函式的最大值與最小值如果輸入顛倒,程式仍可正確輸出。(但建議照規矩來,養成寫程式的好習慣)
3. rand函式不可傳入文字字串、空字串,但可以傳入數字字串。(但建議照規矩來,養成寫程式的好習慣)
4. 傳入值如果輸入小數(浮點數),會被直接轉為整數運算,也就是小數部分會直接去除。

以下兩種情況會產生警告訊息:
1. 只有指定最大值或最小值其中之一時,如:rand(100)
2. 傳入值為文字字串、空字串時。

以下這種情況會產生錯誤訊息:
1. 參數填寫不完全時,如:rand(100,)或rand(,100)

範例:
echo rand(); //正常輸出
echo rand(1,20); //正常輸出
echo rand(100,80); //正常輸出,輸出80-100之間的整數
echo rand(-1,-20); //正常輸出
echo rand(-20,-2); //正常輸出
echo rand(100.1,111.9); //正常輸出,輸出100-111之間的整數
echo rand("1","20"); //正常輸出
echo rand(-888,999); //正常輸出
echo rand("20","-20"); //正常輸出
echo rand(9999999990,9999999999); //正常輸出,但輸出結果有誤
echo rand(0,9999999999999); //正常輸出,但輸出結果有誤
echo rand(a,z); //輸出警告訊息(1),且不傳回值
echo rand(1,z); //輸出警告訊息(2),且不傳回值
echo rand(10,""); //輸出警告訊息(2),且不傳回值
echo rand(10); //輸出警告訊息(3),且不傳回值
echo rand(10,); //輸出錯誤訊息(4)
echo rand(,10); //輸出錯誤訊息(4)

錯誤與警告訊息:
1. Warning: rand() expects parameter 1 to be long, string given
2. Warning: rand() expects parameter 2 to be long, string given
3. Warning: rand() expects exactly 2 parameters, 1 given
4. Parse error: syntax error, unexpected ')'

請注意!警告訊息與錯誤訊息的不同之處在於,就算出現警告網頁程式也會繼續執行到結束,但如果出現錯誤訊則網頁會直接終止執行!


建議:
使用rand函式取得隨機亂數值時,建議手動設定最大值與最小值rand(x,y),而不建議使用rand()這樣的方式取得亂數,如果要隨機取得大範圍亂數但不指定最大值與最小值,我會建議使用mt_rand()這個函式,因為這個函式如果不指定最大值與最小值,它的預設範圍會是在0與2147483647之間。

arrow
arrow
    創作者介紹
    創作者 Johnson峰 的頭像
    Johnson峰

    Johnson峰的部落格

    Johnson峰 發表在 痞客邦 留言(0) 人氣()