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如何使用Kohana框架。

    PHP如何使用Kohana框架?Kohana是一个基于MVC架构的PHP框架,由原始的CodeIgniter框架演变而来,其哲学是简单、灵活和优雅。Kohana框架提供了丰富的功能和良好的可重用性,使得它成为很多PHP开发者的首选。那么,如…

    2023年6月3日
    00
  • PHP的文件上传原理说明

    文件上传的基本介绍、应用场景 点击上传时,照片会上传到哪里去? 当我们点击上传后会将图片、文件等上传到服务器上面,并返回图片的地址,这样,我们只需要给其他用户提供该文件的地址即可。 文件上传的原理说明 …

    2018年9月15日 PHP自学教程
    0272
  • PHPer都应当掌握的注释标记!

    前言注释标签在代码注释中的作用非常大,好的找注释标签可以让你在编程过程中有更好、更舒适的体验,所以我今天准备整理一下这些标记,通过图文的形式展示出来,一方面是为了自己对这些注释标签有一个汇总整理,另…

    2022年6月25日 PHP自学教程
    0128
  • PHP中如何进行安全漏洞扫描处理?

    随着互联网的普及和应用, web应用程序的安全性显得愈发重要。 PHP 作为应用程序的一种重要语言,其本身带来的不安全因素也非常明显。在使用PHP开发web应用程序的过程中,开发人员需要充分了解PHP的安全问题,并且…

    2023年5月17日
    05
  • 基于PHP工具箱设计商城推荐算法

    随着互联网的快速发展,电子商务已经成为了人们日常生活中不可或缺的一部分。而在日渐增多的电商网站中,商品的推荐算法显得尤为重要,它直接影响着消费者购买决策的形成。本文将讨论基于PHP工具箱如何设计商城推荐…

    2023年5月19日
    01
  • Cookie的应用案例

    显示用户访问时间,如果是第一次访问服务器,显示第一次访问,时间为xxx;如果是不是第一次访问,则显示上次访问时间为xxx 思考:想要读取到上次访问这个页面时的时间,由于http协议无状态的,所以默认情况下无法读…

    2018年9月13日 PHP自学教程
    0241
  • php生成微信红包数组教程

    源代码   代码图 效果图

    2018年3月29日
    0242
  • 微信小程序中PHP实现二维码扫描识别技巧。

    随着移动互联网的发展,各种各样的应用程序不断涌现出来,其中微信小程序成为了一种非常受欢迎的应用模式。微信小程序为用户提供了一种全新的使用方式,只需要打开微信即可轻松地进行操作,这一模式也极大地方便了…

    2023年6月3日
    08

联系我们

QQ:951076433

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