当前位置:首页 > 叨叨念念 > PHP生成不重复随机数

PHP生成不重复随机数

叨叨念念 / 星之宇 / 2021-9-28 14:22 / 浏览:2277 / 评论:0

在PHP编程过程中经常要取多个不重复的随机数。随机一个数可以用随机函数rand(),但是现在假如要在1-20中取5个不重复的数字,使用rand(1,20)只可以取一个数字,取5个不重复的随机数就比较麻烦了。比较简单的方法是用数组来取这5个随机数。下面这几种方法多是用数组来实现的。


方法一

首先创建一个有1-20元素的数组,对数组进行随机排序,取数组前5个元素。

$numbers = range (1,20); //将1到20组成一个数组 
shuffle ($numbers); //对数组进行随机排序
$result = array_slice($numbers,1,5); //取数组前5个元素
print_r($result); 


方法二

首先创建一个空白数组,用循环来写入数组元素,并对数组进行删重,直到数组元素达到5个。

$tmp=array(); 
while(count($tmp)<5){ //数组元素个数小于5个
    $tmp[]=rand(1,20); //随机一个1-20的数放入数组
    $tmp=array_unique($tmp); //删除数组中重复的元素
} 
print_r($tmp);


方法三

首先创建一个空白数组,用判断来检查有没有将要写入的元素和数组中的元素有没有重复,没有重复就写入元素,直到数组元素达到5个。

$tmp=array();   
while(count($tmp)<5){   //数组元素个数小于5个
    $a=rand(1,20);   //随机一个1-20的数
    if(!in_array($a,$tmp)){   //判断数组中有没有$a相同的元素,没有就写入数组
        $tmp[]=$a;   
    }   
}   
print_r($tmp);   


方法四

首先创建一个1-20的数组,然后随机取5个元素

$tmp = range(1,20);
print_r(array_rand($tmp,10));

目前有 0 条评论

    • 昵称
    • 邮箱
    • 网址