当前位置: 代码迷 >> PHP >> 循环取一个随机数,请教哪种方式更好些
  详细解决方案

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

热度:23   发布时间:2016-04-28 17:59:05.0
循环取一个随机数,请问哪种方式更好些?
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
  相关解决方案