Home >php教程 >php手册 >php 生成N个不重复的随机数实例详解

php 生成N个不重复的随机数实例详解

WBOY
WBOYOriginal
2016-05-25 16:54:181079browse

以前我给大家有讲过生成多个随机数,下面我再来介绍一篇关于php 生成N个不重复的随机数实例,如果你有兴趣大家可参考一下。

要实现此功能并非难事,但是让我学习到很多。

<?php
/** 
 * 生成一定数量的不重复随机数 
 * @param int $min ,$max指定随机数的范围 
 * @param int $max 
 * @param int $num 指定生成数量 
 * @return array 
 */
function unique_rand($min, $max, $num) { 
    $count = 0; 
    $return = array(); 
    while ($count < $num) { 
        $return[] = mt_rand($min, $max); 
        $return = array_flip(array_flip($return)); 
        $count = count($return); 
    } 
    shuffle($return); 
    return $return; 
}
?>

生成随机数时用了 mt_rand() 函数。这个函数生成随机数的平均速度要比 rand() 快四倍。 

去除数组中的重复值时用了"翻翻法",就是用 array_flip() 把数组的 key 和 value 交换两次。这种做法比用 array_unique() 快得多。 

返回数组前,先使用 shuffle() 为数组赋予新的键名,保证键名是 0-n 连续的数字。如果不进行此步骤,可能在删除重复值时造成键名不连续,给遍历带来麻烦。


本文地址:

转载随意,但请附上文章地址:-)

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn