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

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

在PHP编程过程中,经常会使用随机数或数组,但是如果需要生成不重复的随机数或数组就需要一些特殊的处理,本篇文章就来详细讲解PHP生成不重复随机数、数组的4种方法分享。

方法一 array_unique+array_rand

这种方法先生成一个包含所有可能值的数组,再随机从中选取元素,使用array_unique()函数去除重复元素,最后返回结果数组。

<?php
function unique_rand($min, $max, $num) {
    $count = 0;
    $return = array();
    while ($count < $num) {
        $return[] = mt_rand($min, $max);
        $return = array_unique($return);
        $count = count($return);
    }
    sort($return);
    return $return;
}

使用示例:

$rand_arr = unique_rand(1, 100, 10);
print_r($rand_arr);

方法二 洗牌法

这种方法先生成一个包含所有可能值的数组,使用shuffle()函数打乱数组顺序,然后选取前面几个元素作为生成结果,使用array_slice()函数返回结果数组。

<?php
function shuffle_rand($min, $max, $num) {
    $base_arr = range($min, $max);
    shuffle($base_arr);
    return array_slice($base_arr, 0, $num);
}

使用示例:

$rand_arr = shuffle_rand(1, 100, 10);
print_r($rand_arr);

方法三 while循环

这种方法先生成一个包含所有可能值的数组,然后循环生成指定数量的随机数,去除重复元素,直到达到目标数量为止,使用该方法需要保证可能值数量大于等于目标数量。

<?php
function while_rand($min, $max, $num) {
    $base_arr = range($min, $max);

    $return = array();
    while (count($return) < $num) {
        $rand = mt_rand($min, $max);
        if (!in_array($rand, $return)) {
            $return[] = $rand;
        }
    }

    return $return;
}

使用示例:

$rand_arr = while_rand(1, 100, 10);
print_r($rand_arr);

方法四 for循环

这种方法使用for循环从1到目标数量生成随机数,并检查是否重复。

<?php
function for_loop_rand($min, $max, $num) {
    $return = array();

    for ($i = 1; $i <= $num; $i++) {
        $rand = mt_rand($min, $max);
        while (in_array($rand, $return)) {
            $rand = mt_rand($min, $max);
        }
        $return[] = $rand;
    }

    return $return;
}

使用示例:

$rand_arr = for_loop_rand(1, 100, 10);
print_r($rand_arr);

以上就是PHP生成不重复随机数、数组的4种方法分享,可以根据实际需要进行选择。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php生成不重复随机数、数组的4种方法分享 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】

    实现将几张照片拼接到一起的合成图片功能,可以使用PHP的GD库和ImageMagick扩展,具体攻略如下: 步骤一:安装GD库和ImageMagick扩展 首先需要确认服务器是否已经安装了GD库和ImageMagick扩展。如果没有,需要先进行安装配置。在Ubuntu系统中可以使用以下命令安装: sudo apt-get install php7.0-gd …

    PHP 2023年5月26日
    00
  • php过滤所有的空白字符(空格、全角空格、换行等)

    若要过滤所有的空白字符(空格、全角空格、换行等),可以使用PHP内置的函数preg_replace()配合正则表达式实现。 下面是过滤空白字符的完整攻略: 编写正则表达式,用来匹配所有空白字符。可以使用\s表示空白字符的集合,或者手动列出需要匹配的空白字符,如[ \t\r\n]+可以匹配空格、制表符、回车、换行等字符。 将正则表达式和一个替换字符串作为参数,…

    PHP 2023年5月26日
    00
  • PHP实现模拟http请求的方法分析

    本文将详细讲解PHP实现模拟HTTP请求的方法,包括GET/POST请求,Cookie的设置及Headers的配置等内容。 GET请求 最简单的HTTP请求方式是GET请求,使用curl方法,可以轻松实现GET请求: <?php $url = "https://www.example.com/api/user/info?id=123&quot…

    PHP 2023年5月27日
    00
  • 帖几个PHP的无限分类实现想法~

    下面给出详细讲解“帖几个PHP的无限分类实现想法~”的完整攻略,具体步骤如下: 确定数据结构 无限分类指的是一个分类下可以有多个子分类,并且子分类中也可以包含子分类,因此最合适的数据结构是树形结构,树形结构可以用多种方式来实现,例如: 嵌套集合模型 父子链表模型 在这里,我们以嵌套集合模型为例进行讲解。 数据库设计 对于使用嵌套集合模型实现无限分类,需要在数…

    PHP 2023年5月27日
    00
  • php输出全部gb2312编码内的汉字方法

    要输出gb2312编码内的汉字,首先需要设置php文件的字符编码为gb2312。可以通过以下代码进行设置。 header("Content-Type:text/html;charset=gb2312"); 接着,需要将汉字转换为gb2312编码。可以使用iconv函数进行转换,示例如下。 $hanzi = "你好,世界&quot…

    PHP 2023年5月26日
    00
  • php常用字符串查找函数strstr()与strpos()实例分析

    PHP常用字符串查找函数:strstr()与strpos()实例分析 简介 在PHP中,字符串是经常出现的数据类型之一。而字符串常用的操作之一就是查找。在查找字符串中是否包含另一个字符串时,PHP提供了两个常用的函数:strstr()和strpos()。 请注意区分,strstr()和strpos()的返回值有所不同,具体解释见下文分析。 下面我们分别介绍这…

    PHP 2023年5月26日
    00
  • php获取服务器信息的实现代码

    下面我将给出使用 PHP 获取服务器信息的完整攻略: 1. 获取服务器信息 PHP 提供了多个函数可以用来获取服务器的信息,比如 phpinfo(),sys_getloadavg(),disk_free_space() 等等。 下面是通过 phpinfo() 函数获取服务器信息的示例代码: <?php phpinfo(); ?> 执行这段代码,将…

    PHP 2023年5月23日
    00
  • PHP PDO函数库(PDO Functions)

    PHP PDO(PHP数据对象)是一种轻量级的、跨平台的数据库抽象层,允许开发者在不需要使用特定数据库的语法和函数的情况下轻松访问各种类型的数据库系统。而PHP PDO 函数库即为处理PHP PDO的一些基本函数,下面我们来进行完整的介绍。 连接数据库 使用PHP PDO 连接数据库时,需要指定数据库的类型、主机名、数据库名、用户名以及密码等一些必要的参数。…

    PHP 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部