hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP问题 - 正文 请牢记本站网址www.sosophp.cn

php随机数不反复【php题目】

2019-11-26PHP问题搜搜PHP网62°c
A+ A-
PHP高效发生m个n局限内的不反复随机数(m<=n)

注:在《 Programming Pearls 》一书中也有提到,问题为“怎样高效发生m个n局限内的不反复随机数(m<=n)”(引荐进修:PHP编程从入门到通晓)

该算法异常奇妙的取随机数的位置(数组的下标),替代取随机数自身,每次取到一个随机数以后,就将其在取值局限中消除,下一次仅会在剩下的数字中取,一次遍历就能够完成随机数的拔取,效力相称高。

function rand_num($num='200'){
for($i=0;$i<$num;$i++){
$n[$i] = $i;
}
for($i=0;$i<$num;$i++){
$rand = mt_rand($i,$num-1);
//数组 随机数交流下标
if($n[$i] == $i){
$n[$i] = $n[$rand];
$n[$rand] = $i;
}
}
}

1.第一步,为数组的每一个数字按其下标递次赋值,取得一个 $num 个数字键值对应递次排列的数组。

2.第二步,最先取局限[ i,$num-1 ]局限内的随机数$rand,并将获取到的随机数$rand作为数组中当前位置 键i对应下标的值$rand,将数组中 键$rand对应下标的值替换为 i,这实在就是数组键值交织交换。意义是,将已生成的随机数在取值局限[ i,$num-1 ]中消除,下次会在剩下的数字中[ i+1,num-1 ]取值。

3.第三步,为防止反复取值,只在未转变的键值对中举行交替运算,即在原数组递次排列 (键==值) 的位置举行交替运算。

4.完毕。

以上就是php随机数不反复的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
php随机数不反复【php题目】

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签: