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日

相关文章

  • Win7下手动安装apache2.2、php5.4笔记

    这里是在Win7操作系统下手动安装Apache2.2和PHP5.4的完整攻略。操作过程包括:下载安装Apache2.2、下载安装PHP5.4、进行配置、启动服务等。 下载安装Apache2.2 首先,我们需要从Apache官网下载最新的Apache2.2版本,文件格式可以是zip或者msi安装包。本文以zip包为例,下载完成后解压至指定目录。 例如,解压至C…

    PHP 2023年5月30日
    00
  • 微信小程序实现文件预览

    下面是详细讲解“微信小程序实现文件预览”的完整攻略。 思路概述 在微信小程序中实现文件预览,一般思路是获取文件的临时链接(即tempFilePath),然后使用<web-view>组件加载该链接从而完成文件的预览。同时,由于微信小程序对于不同文件类型的预览方式不同,所以需要进行相应的分类处理。 具体实现 获取 tempFilePath 首先需要通…

    PHP 2023年5月23日
    00
  • PHP中的闭包function() use() {}使用场景和技巧

    闭包(Closure)是PHP中的一种特殊的函数,它可以访问外部作用域中的变量,并且可以在函数调用结束后保持对这些变量的访问。在PHP中,我们可以使用闭包来实现一些高级的编程技巧和设计模式。下面是一些使用闭包的场景和技巧。 1. 使用闭包实现延迟绑定 在PHP中,如果在一个类的方法中使用$this关键字访问类的属性或方法,那么$this关键字会绑定到对象。但…

    PHP 2023年5月12日
    00
  • 使用fileReader的一个坑及解决

    调用fileReader对象的readAsText()方法读取文件内容时,有时会遇到编码问题,导致无法正常读取文件内容的情况。本文将详细讲解使用fileReader的一个坑及解决方法。 问题描述 当fileReader对象读取文件内容时,有时会遇到编码问题,导致无法正确读取文件内容。 示例1 var reader = new FileReader(); re…

    PHP 2023年5月27日
    00
  • php结合正则获取字符串中数字

    获取字符串中数字是开发中常见的需求之一,而正则表达式是实现此目的的有效工具。下面是php结合正则获取字符串中数字的完整攻略,其中包含两个示例: 使用preg_match_all函数进行匹配,获取所有数字 preg_match_all函数可以帮助我们在字符串中查找并获取所有的数字。它的语法如下: preg_match_all($pattern, $subjec…

    PHP 2023年5月26日
    00
  • php fopen()函数案例详解

    PHP中的fopen()函数是一个用于打开文件或者URL的内置函数。这个函数有多种用途,比如:读取文件内容、向文件中添加内容、创建文件等等。本篇文章将详细介绍fopen()函数的使用方法,并提供一些示例。 fopen()函数的语法 fopen()函数的基本语法如下: fopen(filename, mode); 参数说明: filename(必选):需要读取…

    PHP 2023年5月23日
    00
  • PHP中使用extract函数

    当我们需要将一个数组转换成变量时,可以使用 extract 函数。这个函数将数组的键作为变量名,将数组的值作为变量的值。 基本语法 以下是 extract 函数的基本语法: extract($array, $flags); 其中,$array 是需要转换成变量的数组;$flags 可选参数,用于指定变量如何传递到当前符号表中。 示例一 下面是一个简单的示例,…

    PHP 2023年5月27日
    00
  • 又一个php 分页类实现代码

    我会详细讲解“又一个php 分页类实现代码”的完整攻略。 又一个php 分页类实现代码 什么是分页? 分页是指将一定量的数据进行切割,每次只显示其中一部分数据的方式,将多页面切成一个个子页面,以方便用户阅读。 为什么需要分页? 大数据的处理必须使用分页机制,可以将一部分数据流进行缓存,减轻服务器压力,并能有效地提高用户体验。 怎么实现分页? 本文主要介绍一个…

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