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

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数组特性,重复的键会覆盖,此时再翻转一次,就相同于去掉了重复的值。
以上几种方法只是简单的例子,有的方法适用范围有限。

在看看几种方法的效率:

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

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

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

关于php生成不重复随机数、数组的4种方法的文章就分享到这,如果对你有帮助欢迎继续关注我们哦

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/40347.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
php学习php学习订阅用户
上一篇 2022年6月11日 23:58
下一篇 2022年6月11日 23:58

相关推荐

  • PHP实现邮件系统的用户管理功能。

    随着网络通信的发展,邮件已成为人们日常生活和工作中最常用的通讯工具之一。随着电子邮件的普及,相应的邮件系统不断涌现,使得我们可以轻松地进行邮件的收发、存储和管理等操作。而PHP作为一种网页开发语言,也在…

    2023年5月30日
    02
  • php如何使用PHP的PDO_ORACLE扩展。

    PHP是一种流行的动态编程语言,它可以通过各种扩展来拓展其功能。其中,PDO_ORACLE扩展是一种常用的扩展,它可以帮助PHP开发人员连接Oracle数据库并进行操作。本文将介绍如何使用PDO_ORACLE扩展。一、安装PDO_ORACL…

    2023年6月3日
    02
  • Memcache缓存技术在PHP中优化数据交互的实践和思考。

    Memcache缓存技术在PHP中优化数据交互的实践和思考在现代的Web应用中,数据交互是一个非常重要的问题,它没有足够的高效性,将会限制Web应用程序的扩展性和性能。为了加快数据交互速度,我们通常的做法是优化数据库…

    2023年5月21日
    03
  • PHP中使用Redis的hyperLogLog计数器

    PHP是一种常用的服务器端编程语言,常常被用于开发Web应用程序。而Redis是一个开源的内存数据库,被广泛使用于缓存、分布式锁等场景。Redis有一个特殊的数据结构——HyperLogLog,可以进行基数估计。在某些场景下,我…

    2023年5月19日
    012
  • 直击PHP使用ajax的post方式下载excel文件简单示例

    本文实例讲述了PHP使用ajax的post方式下载excel文件。分享给大家供大家参考,具体如下:项目需求,前端发起ajax请求,后端生成excel并下载,同时需要在header头中,带上token验证信息,参考了很多文章,最终实现如…

    2022年6月15日
    0311
  • 全面指南:使用PHP开发直播功能的步骤。

    随着直播技术的不断发展,直播平台也逐渐普及,对于开发者来说,掌握如何使用PHP开发直播功能是一项非常有价值的技能。那么,你想知道使用PHP开发直播功能的步骤吗?下面是一份全面指南,让你轻松掌握。第一步:选…

    2023年5月23日
    010
  • PHP8.0中的文本处理库:Phonetic

    随着PHP 8.0的发布,很多人都在关注它的新特性。其中一个备受瞩目的特性是它的文本处理库,Phonetic。这个库提供了一些有用的方法,如音标转换、拼音转换和近似字符串匹配。在本文中,我们将深入探讨这个库的功能和…

    2023年5月18日
    03
  • php如何使用PHP的Tokenizer扩展。

    PHP是一种流行的服务器端脚本语言,因其易用性和灵活性而备受欢迎。PHP的Tokenizer扩展是一种强大的工具,它允许你将PHP代码分解为令牌,以便进行语法分析和其他操作。在本文中,我们将介绍如何使用PHP的Tokenizer…

    2023年6月3日
    010

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息