在php開(kāi)發(fā)中,rand函數(shù)是很常用的一個(gè)隨機(jī)函數(shù)。這個(gè)函數(shù)我們可以用來(lái)生成隨機(jī)數(shù)、隨機(jī)字符串或隨機(jī)顏色等。
下面我們來(lái)看幾個(gè)使用rand函數(shù)的實(shí)例。
//生成0000-9999的隨機(jī)數(shù) $rand_num = rand(0, 9999); echo $rand_num; //生成6位的隨機(jī)字符串 $rand_str = ''; for ($i=0; $i<6; $i++) { $rand_str .= chr(rand(97, 122)); } echo $rand_str; //生成隨機(jī)顏色 $rand_color = '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT); echo $rand_color;
在上面的例子中,第一個(gè)rand函數(shù)生成了一個(gè)0000-9999之間的隨機(jī)數(shù),第二個(gè)rand函數(shù)生成了一個(gè)6位小寫(xiě)字母組成的字符串,第三個(gè)則生成了一個(gè)隨機(jī)顏色。
rand函數(shù)還有一個(gè)常見(jiàn)的應(yīng)用場(chǎng)景就是生成隨機(jī)驗(yàn)證碼,我們來(lái)看一下如何使用rand函數(shù)生成一個(gè)簡(jiǎn)單的驗(yàn)證碼。
$code = ''; for ($i=0; $i<4; $i++) { $code .= rand(0, 9); } header('Content-Type: image/png'); $img_width = 60; $img_height = 20; $img = imagecreate($img_width, $img_height); $bg_color = imagecolorallocate($img, 255, 255, 255); $font_color = imagecolorallocate($img, 0, 0, 0); imagestring($img, 5, 10, 3, $code, $font_color); imagepng($img);
在這個(gè)例子中,我們生成一個(gè)4位的數(shù)字驗(yàn)證碼,然后用PHP GD庫(kù)生成一個(gè)寬60、高20的PNG格式的圖片,并在里面用黑色字體寫(xiě)上生成的驗(yàn)證碼。
除了rand函數(shù)之外,php還提供了mt_rand函數(shù)可以用來(lái)生成隨機(jī)數(shù),兩個(gè)函數(shù)的區(qū)別在于rand函數(shù)可能產(chǎn)生的隨機(jī)數(shù)分布不夠均勻,而mt_rand函數(shù)的分布則更均勻。
最后要提醒大家的是,在使用隨機(jī)函數(shù)的時(shí)候,一定要注意函數(shù)的參數(shù)范圍和數(shù)字分布均勻性,以盡可能避免生成出不合適的隨機(jī)數(shù)。