旗下导航:搜·么
当前位置:网站首页 > PHP教程 > 正文

php随机生成不在一个局限随机数【php教程】

作者:搜搜PHP网发布时间:2019-11-26分类:PHP教程浏览:107


导读:思绪:将生成的随机数存入数组,再在数组中去除反复的值,即可生成肯定数目的不反复随机数。在PHP网站开辟中,有时刻我们须要生成指定局限内肯定数目的不反复随机数,细致怎样设想这...

思绪:将生成的随机数存入数组,再在数组中去除反复的值,即可生成肯定数目的不反复随机数。

在PHP网站开辟中,有时刻我们须要生成指定局限内肯定数目的不反复随机数,细致怎样设想这个生产随机数的函数呢?我们能够将随机发生的数存入数组,但在存入的同时去除反复的值,即可生成肯定数目的不反复随机数。

也能够把指定局限内的数值存进数组,再运用shuffle($array)打乱这个数组,然后再截取个中肯定数目的值。但背面的一种做法在指定的随机数局限太大的时刻会发生一个较大的数组。

下面给出第一种做法的代码,第二种做法更简朴。

<?php
/*
* array unique_rand( int $min, int $max, int $num )
* 生成肯定数目的不反复随机数,指定的局限内整数的数目必需
* 比要生成的随机数数目大
* $min 和 $max: 指定随机数的局限
* $num: 指定生成数目
*/
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;
}

//生成10个1到100局限内的不反复随机数
$arr = unique_rand(1, 100, 10);
echo implode($arr, ",");
?>

运转效果:48,5,19,36,63,72,82,77,46,16
补充申明:

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

2、去除数组中的反复值时用了“翻转法”,就是用 array_flip() 把数组的 key 和 value 交流两次。这类做法在去除数组反复值的同时效力也比用 array_unique() 快得多。

3、返回数组前,先运用 shuffle() 为数组给予新的键名,保证键名是 0-n 一连的数字。假如不举行此步骤,可能在删除反复值时形成键名不一连,假如用for遍历的时刻会有题目,但假如用foreach或不须要遍历的时刻能够不须要shuffle。

引荐教程:PHP视频教程

以上就是php随机生成不在一个局限随机数的细致内容,更多请关注ki4网别的相干文章!

标签:php随机数范围