您的位置:首页 > 编程语言 > PHP开发

【DAY.9】php随机打乱数组顺序(洗牌算法实现)

2017-03-06 20:46 701 查看
目标:在不调用任何PHP内置函数的前提下,把一个数组顺序随机打乱,变相的洗牌算法。

思路:遍历数组,每一个元素都与另一个随机$key元素进行位置交换,关键在于随机$key的实现,马上就能调用的外部随机数,我只想到了时间戳和微秒数,就采取了截取微秒来生成随机$key,下面是相关代码。

/*
随机打乱数组顺序,不是调用任何PHP内置随机函数
*/
error_reporting(0);
$arr = range(1,100);
print_r(shuffleDiy($arr));
function shuffleDiy($arr){
$len = count($arr);
if($len<=1){
return $arr;
}
for($i=0;$i<$len;$i++){
$temp = $arr[$i];
$rand = getRandNum($len);
$arr[$i] = $arr[$rand];
$arr[$rand] = $temp;
}
return $arr;
}
//生成随机数函数,传值数组长度,获取微秒的几个数字,作为随机数
function getRandNum($len){
$max = strlen($len);
$mic = current(explode(' ',microtime()));
$micc = next(explode('.',$mic));
$res = intval(substr(strrev($micc), 2,$max));
while($res>=$len){
$res = intval($res/2);
}
return $res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息