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日

相关文章

  • JS实现页面跳转参数不丢失的方法

    当我们在页面A中点击链接跳转到页面B时,我们经常需要将一些参数传递给页面B进行处理,如何实现页面跳转参数不丢失呢?下面是一些具体的步骤。 1、将参数存储在URL中 1.1 示例说明 如下面的链接所示,将参数存储在URL中是传递参数的常用方法,它使我们能够轻松地通过将一个键值对与URL结合来传递参数。 <!– 在页面A中的超链接中传递参数 –>…

    PHP 2023年5月26日
    00
  • PHP Laravel门面的实现原理详解

    下面是“PHPLaravel门面的实现原理详解”的完整使用攻略,包括门面的基本原理、门面的实现方式和两个示例说明。 门面的基本原理 在Laravel中,门面是一种提供静态接口的类,它可以让开发者使用简单的语法来访问Laravel的服务容器中的实例。门面的基本原理是:在服务容器中注册一个实例,然后使用门面类来访问该实例。 Laravel的门面类是一个静态类,它…

    PHP 2023年5月12日
    00
  • PHP标准库(PHP SPL)详解

    PHP标准库(PHP SPL)详解 PHP标准库(PHP SPL)是一个由PHP官方提供的代码库,它包含了许多数据结构和算法的实现,是PHP程序员常用的工具之一。在本文中,我们将介绍PHP SPL的常用数据结构和算法,并提供相应的示例和说明,帮助读者更好地理解和应用PHP SPL。 常用数据结构 数组(Array) 数组(Array)是PHP中最常用的数据结…

    PHP 2023年5月23日
    00
  • PHP7下协程的实现方法详解

    PHP7下协程的实现方法详解 什么是协程 协程是一种比线程更轻量级的并发处理单位,可以理解为一个非常轻量级的线程,其本质上是一个函数,不同的协程函数可以在同一个线程中交替执行。 协程的主要优势在于: 轻量级,一个线程中可以支持成千上万个协程 高并发,可以在处理IO等等耗时操作时,不需要等待IO完成,可以将该线程让出CPU,去执行其他协程,从而充分利用CPU资…

    PHP 2023年5月23日
    00
  • 微信小程序调用微信登陆获取openid及java做为服务端示例

    下面是关于微信小程序调用微信登录获取openid并使用Java作为服务端的详细攻略: 前置知识 微信开发者文档的阅读,熟悉微信小程序和微信登录等相关API的使用。 Java基础知识,了解SpringBoot、MyBatis等基本框架的使用。 了解OAuth2.0授权协议,理解其中的授权码、access_token、openid等概念。 攻略步骤 1.配置小程…

    PHP 2023年5月23日
    00
  • php判断变量类型常用方法

    当我们在使用PHP编写程序时,经常需要对变量的类型进行判断,从而进行相应的逻辑处理。下面是几种判断PHP变量类型的常用方法: 一、gettype函数 gettype函数可以获得变量的类型,其返回值可以是以下七种之一: boolean : 布尔型 integer : 整型 double : 浮点型 string : 字符型 array : 数组 object …

    PHP 2023年5月26日
    00
  • php实现网站插件机制的方法

    本文将详细讲解如何使用PHP实现网站插件机制的方法。 什么是网站插件机制 网站插件机制是指,在网站中添加一系列可扩展的模块或插件,这些插件可以通过安装、卸载和激活等操作来扩展网站的功能,同时也方便了网站的维护和管理。 实现网站插件机制的方法 实现网站插件机制的方法有很多,我们这里主要介绍两种较为常见的方法: 方法一:使用composer进行插件管理 comp…

    PHP 2023年5月27日
    00
  • 微信小程序开发搜索功能实现(前端+后端+数据库)

    下面是详细讲解微信小程序开发搜索功能实现的攻略。 一、前置准备 1.创建小程序 首先需要在微信公众平台上创建一个小程序,得到小程序的AppID和AppSecret,同时设置小程序的服务器域名和接口域名。 2.搭建后台服务器 搭建后台服务器需要具备一定的后端开发经验,可以使用Node.js或其他后端技术栈,在服务器上搭建一个API接口,用于提供搜索功能的数据请…

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