当前位置:Gxlcms > PHP教程 > 循环取一个随机数,请教哪种方式更好些

循环取一个随机数,请教哪种方式更好些

时间:2021-07-01 10:21:17 帮助过:27人阅读

循环取一个随机数,请问哪种方式更好些?
for循环18次,每次需要随机得到1,2,3,4中的一个数

$a = floor(18/4);
$b = '1,2,3,4';
for($i=0;$i<$a;$i++){
$b = $b.',1,2,3,4';
}
$c = explode(',',$b);
for($i=0;$i<18;$i++){
$xuyao = $c[$i];//第1种方式
$xuyao = rand(1,4);//第二种方式
//后续其它代码
}

速度+资源占用,请问哪种方式更好些。
------解决思路----------------------
include 'check_speed.php';

function f1() {
$a = array(1,2,3,4);
$a = array_merge($a, $a, $a, $a, $a);
shuffle($a);
return join('', array_slice($a, -18));
}
function f2() {
$r = '';
for($i=0; $i<18; $i++) $r .= rand(1, 4);
return $r;
}
check_speed(50000, 'f2');
check_speed(50000, 'f1');
50000次的平均值
f2
时间: 9 微秒
内存: 768

f1
时间: 8 微秒
内存: 448

显然 f1 的效率要高于 f2

人气教程排行