PHP基于自增數(shù)據(jù)如何生成不重復(fù)的隨機(jī)數(shù)示例
本文主要介紹了PHP基于自增數(shù)據(jù)生成不重復(fù)的隨機(jī)數(shù)的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面多說無益 直接上代碼:
關(guān)鍵點(diǎn)在于生成的自增數(shù)據(jù)位數(shù)控制
位數(shù)控制在于兩個(gè)地方
1、 $base 基數(shù)組 如果是8位這個(gè)數(shù)組必須是8位
2、 $i 自增數(shù),自增數(shù)不能超過8位數(shù)
當(dāng)前簡(jiǎn)單分析的結(jié)果就是以上。大家如果是全局不重復(fù),還是建議使用uuid之類的比較合適。
示例代碼:
function swap($n,$base) { $mask = 19; //1 + 2 + 16 $n = intval($n, 10); $idx = $n & $mask;//取出標(biāo)志位 $xor = $base[$idx] ^ $n;//根據(jù)標(biāo)識(shí)為找到對(duì)應(yīng)的base,異或n return (($xor | $mask) ^ $mask) | $idx;//覆蓋標(biāo)識(shí)位 } $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"; }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
php安裝擴(kuò)展mysqli的實(shí)現(xiàn)步驟及報(bào)錯(cuò)解決辦法
這篇文章主要介紹了 php安裝擴(kuò)展mysqli的實(shí)現(xiàn)步驟及報(bào)錯(cuò)解決辦法的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09php使用mb_check_encoding檢查字符串在指定的編碼里是否有效
本文說的是PHP使用mb_check_encoding檢查字符串在指定的編碼里是否有效的實(shí)例2013-11-11laravel5.2表單驗(yàn)證,并顯示錯(cuò)誤信息的實(shí)例
今天小編就為大家分享一篇laravel5.2表單驗(yàn)證,并顯示錯(cuò)誤信息的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09Yii2.0框架模型添加/修改/刪除數(shù)據(jù)操作示例
這篇文章主要介紹了Yii2.0框架模型添加/修改/刪除數(shù)據(jù)操作,結(jié)合實(shí)例形式分析了Yii2.0使用模型操作數(shù)據(jù)的添加、修改、刪除相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-07-07