Heim > php教程 > php手册 > php生成N个不重复的随机数

php生成N个不重复的随机数

WBOY
Freigeben: 2016-06-06 19:57:15
Original
1078 Leute haben es durchsucht

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 生成N个不重复的随机数,如何在php中实现呢?本文分享的这例php代码,可以实现随机数的生成,生成多个不重复的随机数,有兴趣的朋友参考下。 本节内容: php生成N个不重复的随机数的方法 需要生成1-2

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  生成N个不重复的随机数,如何在php中实现呢?本文分享的这例php代码,可以实现随机数的生成,生成多个不重复的随机数,有兴趣的朋友参考下。

  本节内容:

  php生成N个不重复的随机数的方法

  需要生成1-25之间的16个不重复的随机数,去填补。

  思路:

  将随机数存入数组,再在数组中去除重复的值,即可生成一定数量的不重复随机数。

  例子:

  复制代码 代码示例:

  

  /*

  * array unique_rand( int $min, int $max, int $num )

  * 生成一定数量的不重复随机数

  * $min 和 $max: 指定随机数的范围

  * $num: 指定生成数量

  * site

  */

  function unique_rand($min, $max, $num) {

  $count = 0;

  $return = array();

  while ($count

  $return[] = mt_rand($min, $max);

  $return = array_flip(array_flip($return));

  $count = count($return);

  }

  shuffle($return);

  return $return;

  }

  $arr = unique_rand(1, 25, 16);

  sort($arr);

  $result = '';

  for($i=0; $i

  {

  $result .= $arr[$i].',';

  }

  $result = substr($result, 0, -1);

  echo $result;

  ?>

  运行结果:

  2,3,4,6,7,8,9,10,11,12,13,16,20,21,22,24

  说明:

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

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

  返回数组前,先使用 shuffle() 为数组赋予新的键名,保证键名是 0-n 连续的数字。

  若不进行此步骤,可能在删除重复值时造成键名不连续,不利于遍历。

php生成N个不重复的随机数

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage