这里有几种
方法可以直接生成代码,不产生随机数的重复。
复制代码代码如下所示:
< PHP
定义('random_max ',100);
定义(count,10);
echo'max随机数:'。random_max,';结果计数:伯爵;
invoke_entry('rand1);
invoke_entry('rand2);
invoke_entry('rand3);
invoke_entry('rand4);
功能invoke_entry($ func_name){
时间=新时间();
$时间> time_start();
call_user_func($ func_name);
回声func_name美元。时间花:',为时间-> time_spend();
回声';
}
功能rand1(){
$数=范围(1,random_max);
洗牌(数字);打乱随机数组
结果= array_slice美元(美元的数字,1,计数);
返回$结果;
}
功能rand2(){
结果=数组();
当(计数(结果)<计数){
结果mt_rand美元{ } =(1,random_max); / / mt_rand()是一个更好的功能比兰德和更快的随机()
结果= array_unique美元($结果); / /
删除重复元素的数组
}
返回$结果;
}
功能RAND3(){
结果=数组();
当(计数(结果)<计数){
_tmp美元= mt_rand(1,random_max);
如果(!In_array ($_tmp, $result)) {/ / when the array does not exist in the same element, to allow insertion
结果{ } = _tmp美元美元;
}
}
返回$结果;
}
功能rand4(){
结果=数组();
当(计数(结果)<计数){
结果mt_rand美元{ } =(1,random_max);
结果= array_flip(array_flip美元($结果)); / / array_flip数组中的键和值的交换
}
返回$结果;
}
上课时间{
私人_start美元;
公共功能time_start(){
这_start =美元->美元-> microtime_float();
}
公共功能time_spend(){
返回这个-> microtime_float()-美元-> _start;
}
私有
函数microtime_float(){
列表(USEC美元美元,SEC)=爆炸(
返回((浮动)$ USEC +(浮动)$秒);
}
}
>
说四种方法是通过使用array_flip()方法,将钥匙和使用PHP数组
属性,值的数组翻转,重复键将覆盖,然后翻转一次,删除重复的值相同。
以上方法
都是简单的例子,有些方法在应用范围上是有限的。
看看几种方法的效率:
array_unique()的
性能较差时,阵列的大,当然,洗牌()也将受此
影响。