PHP隨機數怎麼字母加數字組合,前兩個是字母后邊是數字?
回複內容:
PHP隨機數怎麼字母加數字組合,前兩個是字母后邊是數字?
樓上說的思路沒錯,隨機的數量太大會出現重複是很正常的,按你的需求寫了個方法, 有興趣的話, 可以跑個百萬次看看重複的機率是多少
function getRandomString($prefixLength = 2, $suffixLength = 6) { $t = ''; for ($i=0; $i<$prefixLength; $i++) { $salt = mt_rand(1000, 9999); if ($salt % 2) { $t .= chr(mt_rand(97,122)); } else { $t .= chr(mt_rand(65,90)); } } $min = intval(str_pad('1', $suffixLength, '0', STR_PAD_RIGHT)); $max = intval(str_repeat('9', $suffixLength)); return $t . mt_rand($min, $max);}
先產生隨機字母,在產生隨機數字,不過這樣可能出現重複,想盡量避開重複只能從後面的數字下手啦。如下例子你試試看呢
function randomKey(){ $re = ''; $letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; while(strlen($re)<2) { $re .= $letter[rand(0, strlen($letter)-1)]; /** 從$letter中隨機產生一個字元 */ } $_rand = mt_rand(10000000, 99999999); /** 產生8位隨機數 */ list($usec, $sec) = explode(" ", microtime()); /** 擷取微秒時間戳記 */ $microtime = str_replace(".", "", ((float)$usec + (float)$sec)); /** 處理字串 */ $result = $re.$_rand.$microtime;}
這樣產生的隨機數可能有點長,你可以把隨機數去掉,直接使用字母加微妙時間戳記也行。僅供參考
你隨機倆字母 在隨機些數組 然後拼接到一起不就可以嗎?還是有特殊需求?