php生成不重复随机数、数组的四种方法分享
下面写几种生成不重复随机数的方法,直接上代码吧
复制代码代码如下:phpdefine('RANDOM_MAX ',100);define('COUNT ',10);
回声'最大随机数字: '。RANDOM_MAX,';结果计数:'。COUNT,' br/';
invoke _ entry(' rand 1 ');invoke _ entry(' rand 2 ');invoke _ entry(' rand 3 ');invoke _ entry(' rand4 ');
函数invoke _ entry($ func _ name){ $ time=new time();$ time-time _ start();call _ user _ func($ func _ name);echo $func_name .time spend: ',$ time-time _ wave();echo ' br/';}函数rand1() {$numbers=range (1,RANDOM _ MAX);shuffle($ numbers);//随机打乱数组$result=array_slice($numbers,1,COUNT);返回$ result}函数rand 2(){ $ result=array();while(COUNT($ result)COUNT){ $ result[]=mt _ rand(1,RANDOM _ MAX);//mt_rand()是比兰德()更好更快的随机函数$ result=array _ unique($ result);//删除数组中重复的元素}返回$ result}函数rand 3(){ $ result=array();while(COUNT($ result)COUNT){ $ _ tmp=mt _ rand(1,RANDOM _ MAX);if(!in_array($_tmp,$result)) {//当数组中不存在相同的元素时,才允许插入$ result[]=$ _ tmp;}}返回$ result}函数rand4(){ $ result=array();while(COUNT($ result)COUNT){ $ result[]=mt _ rand(1,RANDOM _ MAX);$ result=array _ flip(array _ flip($ result));//数组_翻转将数组的键和价值交换}返回$ result}上课时间{私人$ _ start公共函数time _ start(){ $ this-_ start=$ this-micro time _ float();} public function time _ wave(){ return $ this-micro time _ float()-$ this-_ start;}私有函数microtime_float() {list($usec,$sec)=explode(',micro time());return((float)$ usec(float)$ sec);}}
?
说一下第四种方法,就是翻翻法了,利用array_flip()将数组的键和值翻转,利用服务器端编程语言(专业超文本预处理器的缩写)数组特性,重复的键会覆盖,此时再翻转一次,就相同于去掉了重复的值。以上几种方法只是简单的例子,有的方法适用范围有限。
在看看几种方法的效率:
用数组_唯一()在数组较大时性能比较差,当然洗牌()也会受此影响。
版权声明:php生成不重复随机数、数组的四种方法分享是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。