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

