隨機(jī)函數(shù)及應(yīng)用
-
rand
產(chǎn)生一個(gè)隨機(jī)整數(shù)echo rand(1, 100); // 生成一個(gè) 1-100 之間的隨機(jī)數(shù)
-
uniqid
生成一個(gè)唯一IDecho uniqid(); echo uniqid('prefix', true); echo uniqid('', true); /* string uniqid ( [ string $prefix = "" [, bool $more_entropy = false ]] ) 獲取一個(gè)帶前綴、基于當(dāng)前時(shí)間微秒數(shù)的唯一ID。 $more_entropy 設(shè)置為true 會(huì)提高唯一性德谅。 prefix為空八拱,則返回的字符串長(zhǎng)度為13缭保。more_entropy 為 TRUE傻粘,則返回的字符串長(zhǎng)度為23鬓催。 */
-
概率計(jì)算
// 計(jì)算10%的概率 if( rand(1,100) <= 10 ) echo "10%"; // 計(jì)算任意概率 $rate = 0.123; // 0-1之間的小數(shù) $max = pow(10, strlen($rate)-2); if( rand(1, $max) <= $rate*$max ) { echo $rate; }
-
生成一個(gè)由數(shù)字字母組成同诫,指定長(zhǎng)度的字符串
$len = 10; $str = ''; for($i = 0; $i < $len; $i++) { $str .= rand(0, 35) < 10 ? chr(rand(48, 57)) : chr(rand(65, 90)); } echo $str; // chr 將一個(gè)ASCII碼轉(zhuǎn)換為字符串,ASCII 48-57 對(duì)應(yīng)0-9壮锻,65-90對(duì)應(yīng)大寫(xiě)A-Z
-
生成一個(gè)唯一字符串ID琐旁,帶服務(wù)器IP和用戶IP信息
function createUniqid() { $serverIp = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : '127.0.0.1'; // 獲取服務(wù)器IP $userIp = isset($_SERVER['REMOAT_ADDR']) ? $_SERVER['REMOAT_ADDR'] : '127.0.0.1'; // 獲取用戶端IP // 將IP轉(zhuǎn)換為字符串 $serverIp = base_convert(ip2long($serverIp), 10, 36); $userIp = base_convert(ip2long($userIp), 10, 36); // 生成一個(gè) uniqid,去掉里面的'.'猜绣,然后用進(jìn)制轉(zhuǎn)換為字符串 $uniqid = uniqid('', true); $uniqid = base_convert(str_replace('.', '', $uniqid), 16, 36); return $serverIp.'-'.$userIp.'-'.$uniqid; } echo createUniqid();