php生成不重复随机数,数组的方法有哪些

  

php生成不重复随机数,数组的方法有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

下面写几种生成不重复随机数的方法,直接上代码吧

代码如下:

& lt; ? phpdefine (& # 39; RANDOM_MAX& # 39;, 100);定义(& # 39;计数# 39;10);   回声& # 39;马克斯随机num: & # 39;。RANDOM_MAX & # 39;,结果数:& # 39;。计数,& # 39;& lt; br/祝辞& # 39;;   invoke_entry (& # 39; rand1& # 39;); invoke_entry (& # 39; rand2& # 39;); invoke_entry (& # 39; rand3& # 39;); invoke_entry (& # 39; rand4& # 39;);   函数invoke_entry (func_name美元){$时间=new ();时间→美元time_start ();call_user_func ($ func_name);echo $ func_name强生# 39;时间花:& # 39;时间→美元time_spend ();回声& # 39;& lt; br/祝辞& # 39;;}函数rand1(){$数字=范围(1,RANDOM_MAX);洗牌(元数据);//随机打乱数组结果=array_slice美元(美元数字1数);返回结果美元;}函数rand2(){$=结果数组();而(count ($) & lt;数){$结果[]=mt_rand (1, RANDOM_MAX);//mt_rand()是比rand()更好更快的随机函数美元=array_unique结果(结果);//删除数组中重复的元素}返回结果美元;}函数rand3(){$=结果数组();而(count ($) & lt;数){$ _tmp=mt_rand (1, RANDOM_MAX);如果(!in_array (_tmp美元,导致美元)){//当数组中不存在相同的元素时,才允许插入结果[]=_tmp美元;}}返回结果美元;}函数rand4(){$=结果数组();而(count ($) & lt;数){$结果[]=mt_rand (1, RANDOM_MAX);结果美元=array_flip (array_flip(结果)美元);//array_flip将数组的键和值交换}返回结果美元;}课堂时间{私人美元的地方;公共函数time_start () {$ this→地方=$这→microtime_float ();}公共职能time_spend(){返回$ this→microtime_float()——这个→美元的地方;}私人microtime_float()函数{列表(美国铀浓缩公司(sec)美元=爆炸(““());返回((浮动)美国铀浓缩公司+(浮动)美元sec);}}   ?在

说一下第四种方法,就是翻翻法了,利用<代码> array_flip() 将数组的键和值翻转,利用php数组特性,重复的键会覆盖,此时再翻转一次,就相同于去掉了重复的值。
以上几种方法只是简单的例子,有的方法适用范围有限。

在看看几种方法的效率:

 php生成不重复随机数,数组的方法有哪些

 php生成不重复随机数,数组的方法有哪些

用<代码> array_unique() 在数组较大时性能比较差,当然<代码> shuffle()>


php生成不重复随机数,数组的方法有哪些