如何使用php生成不重复的数字

  介绍

如何使用php生成不重复的数字?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

php生成不重复数字的方法:首先初始化变量为0,然后创建一个新数组,并在一定范围内随机生成一个数放入数组中,接着去除数组中的重复值;最后将数组的数量存入变量计算中,并为数组赋予新的键名即可。

<强> php生成一个不重复随机数组的封装方法

/*   *数组unique_rand (int分钟美元,int马克斯美元,int num美元)   *生成一定数量的不重复随机数   * min和max美元:指定随机数的范围   * $ num:指定生成数量   */函数unique_rand (min,马克斯,美元num美元){//初始化变量为0   $ count=0;//建一个新数组   $=返回数组();   而(美元数& lt;num美元){//在一定范围内随机生成一个数放入数组中   $返回[]=mt_rand (min,马克斯美元);//去除数组中的重复值用了“翻翻法”,就是用array_flip()把数组的键和值交换两次。这种做法比用array_unique()快得多。   美元回报=array_flip (array_flip(返回)美元);//将数组的数量存入变量计算中   $ count=count($返回);   }//为数组赋予新的键名   洗牌(美元返回);   返回美元返回;   }

该方法以每次获取随机数存入数组再去重……效率低下……不想用

PHP高效产生m个n范围内的不重复随机数(m<=n)

注:在《编程珍珠》一书中也有提到,题目为“如何高效产生m个n范围内的不重复随机数(m<=n) "

该算法非常巧妙的取随机数的位置(数组的下标),替代取随机数本身,每次取到一个随机数之后,就将其在取值范围中排除,下一次仅会在剩下的数字中取,一次遍历就可以完成随机数的选取,效率相当高。

函数rand_num (num=& # 39; 200美元& # 39;){   (我=0;i<美元;num美元,美元我+ +){   $ n ($ i)=$我;   }   (我=0;i<美元;num美元,美元我+ +){   $兰德=mt_rand(我num-1美元);//数组随机数交换下标   如果($ n [$ i]==$ i) {   $ n [$ i]=$ n(兰德美元);   $ n(兰德美元)=$我;   }   }   }

1。第一步,为数组的每个数字按其下标顺序赋值,获得一个美元num个数字键值对应顺序排列的数组。

2。第二步,开始取范围(我,num-1美元)范围内的随机数兰德美元,并将获取到的随机数美元兰德作为数组中当前位置键我对应下标的兰德美元值,将数组中键兰德对美元应下标的值替换为我,这其实就是数组键值交叉互换。意义是,将已经生成的随机数在取值范围(我,num-1美元)中排除,下次会在剩下的数字中(i + 1, num-1)取值。

3。第三步,为避免重复取值,只在未改变的键值对中进行交替运算,即在原数组顺序排列(键==值)的位置进行交替运算。

4。结束。

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

如何使用php生成不重复的数字

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

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

如何使用php生成不重复的数字