本文主要介紹了PHP基于自增數據生成不重復的隨機數的相關內容,分享出來供大家參考學習,下面多說無益 直接上代碼:
關鍵點在于生成的自增數據位數控制
位數控制在于兩個地方
1、 $base 基數組 如果是8位這個數組必須是8位
2、 $i 自增數,自增數不能超過8位數
當前簡單分析的結果就是以上。大家如果是全局不重復,還是建議使用uuid之類的比較合適。
示例代碼:
function swap($n,$base) { $mask = 19; //1 + 2 + 16 $n = intval($n, 10); $idx = $n & $mask;//取出標志位 $xor = $base[$idx] ^ $n;//根據標識為找到對應的base,異或n return (($xor | $mask) ^ $mask) | $idx;//覆蓋標識位 } $newArray=[]; $base = array ( 0 => 1918407, 1 => 5529570, 2 => 6527234, 3 => 6550962, 4 => 8054672, 5 => 3141234, 6 => 2125630, 7 => 6978033, 8 => 4623630, 9 => 4736420, 10 => 7767295, 11 => 9679880, 12 => 1665600, 13 => 6044373, 14 => 4661383, 15 => 5771843, 16 => 2206123, 17 => 5685396, 18 => 5571647, 19 => 7178311, ); for ($i=0;$i<1000000;$i++) { $newArray[]= swap($i,$base)."\r\n"; }
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對的支持。
【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。