首页后端开发PHP分享php生成不重复随机数、数组的4种方法

分享php生成不重复随机数、数组的4种方法

时间2024-02-02 08:13:03发布访客分类PHP浏览959
导读:收集整理的这篇文章主要介绍了分享php生成不重复随机数、数组的4种方法,觉得挺不错的,现在分享给大家,也给大家做个参考。下面写几种生成不重复随机数的方法,直接上代码吧代码如下:<?phpdefine('RANDOM_MAX', 100...
收集整理的这篇文章主要介绍了分享php生成不重复随机数、数组的4种方法,觉得挺不错的,现在分享给大家,也给大家做个参考。

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

代码如下:

?phpdefine('RANDOM_MAX', 100);
    define('COUNT', 10);
    echo 'max random num: '.RANDOM_MAX, ' ;
    result count:'.COUNT, 'br/>
    ';
    invoke_entry('rand1');
    invoke_entry('rand2');
    invoke_entry('rand3');
    invoke_entry('rand4');
function invoke_entry($func_name) {
     $time = new time();
     $time->
    time_start();
     call_user_func($func_name);
     echo $func_name.' time sPEnd: ', $time->
    time_spend();
     echo 'br/>
    ';
}
function rand1() {
     $numbers = range (1, RANDOM_MAX);
     shuffle($numbers);
     //随机打乱数组 $result = array_slice($numbers, 1, COUNT);
     return $result;
}
function rand2() {
     $result = array();
  while(count($result) COUNT) {
      $result[] = mt_rand(1, RANDOM_MAX);
     //mt_rand()是比rand()更好更快的随机函数  $result = array_unique($result);
 //删除数组中重复的元素 }
     return $result;
}
function rand3() {
     $result = array();
    while(count($result)  COUNT) {
      $_tmp = mt_rand(1, RANDOM_MAX);
  if(!in_array($_tmp, $result)) {
     //当数组中不存在相同的元素时,才允许插入   $result[] = $_tmp;
  }
 }
        return $result;
}
function rand4() {
     $result = array();
 while (count($result)  COUNT) {
      $result[] = mt_rand(1, RANDOM_MAX);
      $result = array_flip(array_flip($result));
 //array_flip将数组的key和value交换 }
     return $result;
}
class time {
     PRivate $_start;
  public function time_start() {
      $this->
    _start = $this->
    microtime_float();
 }
 public function time_spend() {
      return $this->
    microtime_float() - $this->
    _start;
 }
 private function microtime_float() {
      list($usec, $sec) = explode(" ", microtime());
      return ((float)$usec + (float)$sec);
 }
}
    ?>
    

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

在看看几种方法的效率:

array_unique()在数组较大时性能比较差,当然shuffle()也会受此影响。

相关学习推荐:PHP编程从入门到精通

以上就是分享php生成不重复随机数、数组的4种方法的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 分享php生成不重复随机数、数组的4种方法
本文地址: https://pptw.com/jishu/596585.html
直击php反射学习之不用new方法实例化类操作 谈谈PHP中interface的用处

游客 回复需填写必要信息