php应用rand天生没有反复随机数的办法:起首为数组的每一个数字按其下标程序赋值;而后开端取范畴[ i,$num-1 ]范畴内的随机数【$rand】,并将猎取到的随机数【$rand】作为数组中以后地位;最初正在未扭转的键值对中进行瓜代运算。
php应用rand天生没有反复随机数的办法:
/* * 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; }
该办法以每一次猎取随机数存入数组再去重...效率低下...没有想用
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编程(视频)
以上就是php若何应用rand天生没有反复随机数的具体内容,更多请存眷资源魔其它相干文章!
标签: php php教程 php故障解决 php使用问题 rand
抱歉,评论功能暂时关闭!