本文目錄一覽:
php怎麼生成隨機數
//隨機數函數,$length為隨機的數字長度
function randomkeys($length)
{
$key = “”;
$pattern=’1234567890abcdefghijklmnopqrstuvwxyz’;
for($i=0;$i$length;$i++)
{
$key .= $pattern{mt_rand(0,35)}; //生成php隨機數
}
return $key;
}
$a = randomkeys(1);
$b = randomkeys(1);
$c = randomkeys(1);
//如果要隨機生成N個字元,則只需要
echo randomkeys(5);
php:如何生成隨機的唯一字母數字字元串
1. 自己寫代碼產生隨機的數字和字母組合,每產生1個去資料庫查詢該隨機碼是否已存在,如果已存在,則重新產生,直到不重複為止。
缺點:產生速度慢,還要查詢資料庫,當數據量大的時候,可能重複的機率會比較高,要查詢多次資料庫.
2. guid,該方法應該是用的比較多的。
優點:使用簡單方便,不用自己編寫額外的代碼
缺點:佔用資料庫空間相對較大,特別是根據guid查詢速度比較慢(畢竟是字元串)。
3. 主鍵+隨機碼的方式,我們產生的隨機碼保存到資料庫肯定會有個主鍵,用該主鍵+隨機字元來組合。產生步驟:
1) 先從id生成器中獲取id,比如是155.
2)填充成固定位數(比如8位)的字元串(不夠位數的左邊填0,超過位數直接使用該數字),得到:00000155
3)在每個數字後面隨機插入1個字母或其它非數字元號,得到:0A0F0R0Y0H1K5L5M
這樣就可以得到1個隨機的唯一的邀請碼了。
優點:使用也比較簡單,不用查詢資料庫。最大的優點是查詢的時候,可以根據邀請碼直接得到主鍵id,然後根據id去資料庫查詢(速度很快),再比較查詢出來的邀請碼和用戶提交的邀請碼是否一致。
缺點:需要使用id產生器,如果主鍵是資料庫自增長的就不太好用(需要先插入資料庫獲取id,再更新邀請碼)。
4. 有時候產品經理說,我要求邀請碼都是數字的。把方法3變通下就可以實現唯一的純數字隨機碼了。
1) 獲取id: 155
2) 轉換成8進位:233
3) 轉為字元串,並在後面加’9’字元:2339
4)在後面隨機產生若干個隨機數字字元:2003967524987
轉為8進位後就不會出現9這個字元,然後在後面加個’9’,這樣就能確定唯一性。最後在後面產生一些隨機數字就可以。
PHP時間內隨機生成數字
如果實際情況和你給出的例子這麼簡單,那就沒有必要隨機生成,使用 shuffle 打亂 array 其實就等於隨機了。
$arr = array(1,2,3,4,5);
print_r($arr); // 輸出 1,2,3,4,5
shuffle($arr); // 打亂順序
print_r($arr); // 輸出打亂順序的數字
或者,使用rand隨機生成。先複製一個相同的array,每生成一個隨機數,就把它從array中刪除,然後在剩餘的數字中再生成隨機。
$arr = array(1,2,3,4,5);
$arr_tmp = $arr;
for($i = 0; $i count($arr_tmp) + $i; $i++) {
$rand = rand(0, count($arr_tmp) – 1);
echo “p第”.($i + 1).”個隨機數:”.$arr_tmp[$rand].”/p”;
unset($arr_tmp[$rand]);
$arr_tmp = array_values($arr_tmp);
}
PHP基於自增數據如何生成不重複的隨機數示例
1、 $base 基數組 如果是8位這個數組必須是8位
2、 $i 自增數,自增數不能超過8位數
當前簡單分析的結果就是以上。大家如果是全局不重複,還是建議使用uuid之類的比較合適。
求php生成多個隨機數代碼
$str = “abcdef123456”; //定義一串字元串
$strlen = strlen($str); //獲取字元串的長度(12)
$rand = intval(rand(0,$strlen-1)); //在字元串的長度範圍內隨機取一個字元,字元長度不能大於字元本身的長度所以-1
$str_a = substr($str,$rand,1); //取出字元
//取六個隨機數
$randstr = ”; //聲明一個變數
$randarr = array(); //聲明一個數組
for($i = 1; $i 30; $i++){
$rand6 = intval(rand(0,$strlen-1));
$str_a6 = substr($str,$rand6,1);
if(!in_array($str_a6,$randarr)){
$randstr .= $str_a6;
array_push($randarr,$str_a6);
if(count($randarr)==6){
break;
}
}
}
echo $randstr;
原創文章,作者:IDIQ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/132538.html