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

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

基础教程推荐