最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

php如何实现不重复的随机数

来源:动视网 责编:小采 时间:2020-11-06 11:42:37
文档

php如何实现不重复的随机数

php如何实现不重复的随机数:php实现不重复随机数的方法:首先初始化变量为0;然后建一个新数组;接着在一定范围内随机生成一个数放入数组中,并去除数组中的重复值;最后为数组赋予新的键名即可。推荐:《PHP视频教程》PHP生成一个不重复随机数组的封装方法/* * array unique_
推荐度:
导读php如何实现不重复的随机数:php实现不重复随机数的方法:首先初始化变量为0;然后建一个新数组;接着在一定范围内随机生成一个数放入数组中,并去除数组中的重复值;最后为数组赋予新的键名即可。推荐:《PHP视频教程》PHP生成一个不重复随机数组的封装方法/* * array unique_


推荐:《PHP视频教程》

PHP生成一个不重复随机数组的封装方法

/*
	 * 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)

注:在 《 Programming Pearls 》一书中也有提到,题目为 “如何高效产生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.结束。

顺序排列数组部分交换过程

如上图,获取10个随机数部分试例。

文档

php如何实现不重复的随机数

php如何实现不重复的随机数:php实现不重复随机数的方法:首先初始化变量为0;然后建一个新数组;接着在一定范围内随机生成一个数放入数组中,并去除数组中的重复值;最后为数组赋予新的键名即可。推荐:《PHP视频教程》PHP生成一个不重复随机数组的封装方法/* * array unique_
推荐度:
标签: php 实现 进行
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top