百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> php随机生成不在一个范畴随机数
分享文章到:

php随机生成不在一个范畴随机数

发布时间:09/01 来源:未知 浏览: 关键词:

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

在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随机生成不在一个范畴随机数的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板