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

yizhihongxing

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设计模式之命令模式示例详解 命令模式是一种行为型模式,它允许你将请求封装成对象,这样就可以使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持撤销操作,因此被称为可撤销的操作。 示例1: 使用命令模式实现固定长度的文件备份 示例1中,我们将使用命令模式实现固定长度的文件备份。在此示例中,我们将使用一个Command接口来表示备份的命令,并让每个…

    PHP 2023年5月23日
    00
  • PHP概率计算函数汇总

    题目:详细讲解“PHP概率计算函数汇总”的完整攻略,过程中至少包含两条示例说明。 PHP概率计算函数汇总 在 PHP 中,我们可以使用一系列内置函数来进行概率计算。以下是一些常用的概率计算函数: rand() rand() 函数可以生成一个随机整数。 $random_number = rand(1, 10); // 生成一个介于1和10之间的随机整数 ech…

    PHP 2023年5月26日
    00
  • PHP字符转义相关函数小结(php下的转义字符串)

    PHP字符转义相关函数小结 在PHP编程中,字符串常常需要进行转义处理,以保证字符串在传递过程中的正确性。针对字符串转义问题,PHP提供了一些内置函数来完成转义相关的操作。本文将对PHP中常见的字符转义函数进行小结。 addslashes函数 addslashes函数用于在字符串中添加反斜线来转义特殊字符,包括单引号、双引号、反斜线和NUL(NULL字符)。…

    PHP 2023年5月25日
    00
  • php组合排序简单实现方法

    下面是“php组合排序简单实现方法”的完整攻略。 概述 组合排序也称为bogo排序,它是一种极其耗时的排序算法。组合排序的基本思想是对于给定的一组数据,将要排序的数列中的所有元素进行全排列,通过比较所有排列,找出符合排序要求的排列。虽然组合排序的时间复杂度很高,但是对于小规模的数据排序,它也是一种简单易懂的算法。 算法实现 首先定义一个函数shuffle_a…

    PHP 2023年5月26日
    00
  • PHP树的深度编历生成迷宫及A*自动寻路算法实例分析

    要详细讲解“PHP树的深度编历生成迷宫及A*自动寻路算法实例分析”的攻略,可以从以下几个方面展开讲解: 算法说明 首先需要介绍一下算法的原理,可以结合代码实现进行分析。这个算法主要分为两部分,第一部分是生成迷宫,第二部分是利用A算法进行自动寻路。生成迷宫是通过树的深度优先遍历实现的,其中可以对不合法的路径进行剪枝,最后得到一个随机生成的迷宫。在进行寻路时,使…

    PHP 2023年5月27日
    00
  • php面向对象程序设计

    PHP面向对象程序设计完整使用攻略 PHP面向对象程序设计是一种基于对象的编程范式,它将数据和操作封装在一起,以便于代码的复用和维护。本文将详细讲解PHP面向对象程序设计的使用攻略,包括基本概念、类和对象、继承和多态、接口和抽象类、命名空间和自动加载、异常处理和魔术方法等。 基本概念 在PHP中,面向对象程序设计是基于类和对象的编程范式。类是一种抽象的数据类…

    PHP 2023年5月12日
    00
  • PHP操作路由器实现方法示例

    PHP操作路由器实现方法示例 本文将介绍使用PHP来操作路由器的实现方法,以及两个示例说明。 一、实现方法 对于路由器的操作,一般需要使用SNMP协议进行,而PHP中有一个名为php-snmp的扩展可以帮助我们进行SNMP相关的操作。具体实现步骤如下: 1. 安装php-snmp扩展 可以通过php的包管理器(比如apt、yum、brew等)来进行安装,也可…

    PHP 2023年5月26日
    00
  • php使用simple_html_dom解析HTML示例

    下面就给您讲解一下“php使用simple_html_dom解析HTML示例”的完整攻略。 一、简介 simple_html_dom是一个功能强大的PHP第三方库,主要用于HTML文本的解析、遍历以及查找。使用simple_html_dom库,我们可以方便地获取HTML文本中的各种元素和属性,进而对其进行分析处理。 二、安装 simple_html_dom库…

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