订单编号,递增且不连续(php版)
生活随笔
收集整理的這篇文章主要介紹了
订单编号,递增且不连续(php版)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1、實(shí)現(xiàn)方式,使用while循環(huán),比較low,200w條數(shù)據(jù) 2s
public function getMany ($startNum, $count) {$num = $startNum;$codes[] = $startNum;for($i=1;$i<=$count;$i++){$num1 = random_int(1,9);while($num == $num1) {$num1 = random_int(1,9);}$num = $num1;$startNum += $num;$codes[] = $startNum;}return $codes; }2、實(shí)現(xiàn)方式,使用遞歸,把random_int替換成mt_rand,200w數(shù)據(jù)0.9s
public function getManys ($num, $count) {$codes = [];$startNum = 0;for($i = 1;$i <= $count; $i++){$num = $this->getNotRepeatNum($num, mt_rand(1, 9));$startNum += $num;$codes[] = $startNum;}return $codes; }public function getNotRepeatNum($startNum, $endNum) {if($startNum == $endNum) {return $this->getNotRepeatNum($startNum, mt_rand(1, 9));}return $endNum; }3、實(shí)現(xiàn)方式,上次使用的數(shù)據(jù)下次不使用,把random_int替換成mt_rand,200w數(shù)據(jù)0.7s
public function getManys ($startNum, $count) {$codes = [];$num = [1,2,3,4,5,6,7,8,9];$lastNum = 0;for($i=1;$i<=$count;$i++){if($lastNum == 0) {$startNum += $num[mt_rand(0, 8)];} else {$diff = array_diff($num, [$lastNum]);$startNum += $diff[mt_rand(0, 7)];}$codes[] = $startNum;}return $codes; }總結(jié)
以上是生活随笔為你收集整理的订单编号,递增且不连续(php版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 北向资金运作akshare
- 下一篇: Installation failed,