background image

php 生成不重复的随机数

PHP 编程过程中经常要取多个不重复的随机数。

随机一个数可以用随机函数

rand(),但是现在假如要在 1-20 中取 5 个不重复的数字,使用

rand(1,20)只可以取一个数字,取 5 个不重复的随机数就比较麻烦了。

 比较简单的方法是用数组来取这 5 个随机数。下面这 3 种方法多是用数组来实现的。
 第一种:首先创建一个有 1-20 元素的数组,对数组进行随机排序,取数组前 5 个元素。
<?php
$numbers = range (1,20); //将 1 到 20 组成一个数组
shuffle ($numbers); //对数组进行随机排序
$result = array_slice($numbers,1,5); //取数组前 5 个元素
print_r($result);
?>
第二种:首先创建一个空白数组,用循环来写入数组元素,并对数组进行删重,直到数组
元素达到

5 个。

<?php
$tmp=array();
while(count($tmp)<5){ //数组元素个数小于 5 个
$tmp[]=rand(1,20); //随机一个 1-20 的数放入数组
$tmp=array_unique($tmp); //删除数组中重复的元素
}
print_r($tmp);
?>
第三种:首先创建一个空白数组,用判断来检查有没有将要写入的元素和数组中的元素有
没有重复,没有重复就写入元素,直到数组元素达到

5 个。

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