1、实现方式,使用while循环,比较low,200w条数据 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、实现方式,使用递归,把random_int替换成mt_rand,200w数据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、实现方式,上次使用的数据下次不使用,把random_int替换成mt_rand,200w数据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; }