后端开发|PHP问题
php,rand
后端开发-PHP问题
html5赛车游戏源码,vscode补齐标签,中文输入法ubuntu系统,启动tomcat 8,sqlite打不开6,在线问题提交插件,前端框架都什么意思,英雄联盟战队数据爬虫,execute php,许昌做seo,企业网站 ,网页客服插件代码,淘客新模板lzw
php使用rand生成不重复随机数的方法:
在线表情包制作源码,ubuntu不能识别分区,爬虫 低价商品,php全局换肤,运城网络seolzw
/** array unique_rand( int $min, int $max, int $num )* 生成一定数量的不重复随机数* $min 和 $max: 指定随机数的范围* $num: 指定生成数量*/function unique_rand($min, $max, $num) {//初始化变量为0$count = 0;//建一个新数组$return = array();while ($count < $num) {//在一定范围内随机生成一个数放入数组中$return[] = mt_rand($min, $max);//去除数组中的重复值用了“翻翻法”,就是用array_flip()把数组的key和value交换两次。这种做法比用 array_unique() 快得多。$return = array_flip(array_flip($return));//将数组的数量存入变量count中$count = count($return);}//为数组赋予新的键名shuffle($return);return $return;}
该方法以每次获取随机数存入数组再去重…效率低下…不想用
家政 免费源码,vscode 的php插件,ubuntu stp on,tomcat链接失败,IE浏览器支持sqlite,好奇发的爬虫大集合,php 修改url,seo优化要什么条件,个人商品交易网站源码,网页代码背景,帝国图片站模板下载lzw
PHP高效产生m个n范围内的不重复随机数(m<=n)
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如何使用rand生成不重复随机数》对你有帮助,请点赞、收藏,并留下你的观点哦!