【DAY.9】php随机打乱数组顺序(洗牌算法实现)
2017-03-06 20:46
701 查看
目标:在不调用任何PHP内置函数的前提下,把一个数组顺序随机打乱,变相的洗牌算法。
思路:遍历数组,每一个元素都与另一个随机$key元素进行位置交换,关键在于随机$key的实现,马上就能调用的外部随机数,我只想到了时间戳和微秒数,就采取了截取微秒来生成随机$key,下面是相关代码。
思路:遍历数组,每一个元素都与另一个随机$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; }
相关文章推荐
- 洗牌算法:随机打乱一个数组的顺序
- 分享两个JavaScript打乱数组顺序实现随机排序洗牌的方法(应用于音乐视频的随机播放等)
- 洗牌算法:随机打乱一个数组的顺序
- 一道试题中备选答案打乱顺序,随机展示,用数组实现
- 洗牌算法 数组打乱顺序 Fisher-Yates shuffle
- 将一组数据中的元素打乱,可以当成洗牌的算法,也可以用去实现拼图游戏当中随机位置的产生
- 随机打乱数组(包括二维数组)的顺序-python实现
- 随机打乱数组的顺序-python实现
- 用 公平的算法 把一个数组打乱(两种实现方式)
- 求一个数组中的最大值和最小值的算法改进 php 实现
- 洗牌、发牌算法 (打乱扑克牌顺序)
- Java基础之随机打乱一个顺序数组
- 随机打乱一个数组的算法
- JAVA随机打乱数组的顺序
- php中通过数组进行高效随机抽取指定条记录的算法
- Java基础之随机打乱一个顺序数组
- Java基础之随机打乱一个顺序数组
- C#List随机交换取数据(C#实现的洗牌算法)
- Delphi洗牌算法 - 将一个数组随机乱序
- 韩顺平_PHP程序员玩转算法公开课(第一季)07_使用数组实现堆栈_学习笔记_源代码图解_PPT文档整理