PHP生成指定范围内的N个不重复的随机数
长沙网络推广分享:PHP生成指定范围内不重复随机数的技巧
在PHP网站开发中,我们经常需要生成指定范围内的不重复随机数。今天,长沙网络推广为大家带来一种实用的方法,帮助你在指定范围内轻松生成N个不重复的随机数。
思路介绍:
生成随机数并存入数组,然后去除数组中的重复值。这样,你就可以得到一定数量的不重复随机数。
实现方法:
我们提供了一个名为`unique_rand`的函数,它接受三个参数:随机数的最小值 `$min`、最大值 `$max`以及要生成的随机数数量 `$num`。函数的主要逻辑如下:
1. 初始化一个空数组 `$return` 用于存储生成的随机数。
2. 使用 `while` 循环,直到生成足够数量的随机数。
3. 在每次循环中,使用 `mt_rand($min, $max)` 生成一个随机数,并将其添加到 `$return` 数组中。
4. 利用“翻转法”去除数组中的重复值。通过两次 `array_flip()` 函数的调用,将数组的键和值交换两次,达到去除重复值的目的。这种方法的效率比使用 `array_unique()` 高得多。
5. 使用 `shuffle($return)` 打乱数组顺序,确保返回的数组键名是连续的 0-n 数字。
示例代码:
```php
function unique_rand($min, $max, $num) {
$count = 0;
$return = array();
while ($count < $num) {
$return[] = mt_rand($min, $max);
$return = array_flip(array_flip($return));
$count = count($return);
}
shuffle($return);
return $return;
}
// 生成10个1到100范围内的不重复随机数
$arr = unique_rand(1, 100, 10);
echo implode(",", $arr); // 输出生成的随机数,例如:48,5,19,36,63,72,82,77,46,16
```
几点说明:
1. 使用 `mt_rand()` 函数生成随机数,其速度比 `rand()` 快几倍。
2. “翻转法”去除数组重复值的效率较高。
3. 在返回数组前,使用 `shuffle()` 为数组赋予新的键名,确保键名是连续的 0-n 数字。这在某些情况下是必要的,比如在遍历数组时。
以上就是关于PHP生成指定范围内不重复随机数的分享,希望对大家的学习和工作有所帮助。如果你对狼蚁SEO有更多兴趣,请访问狼蚁网站SEO优化相关链接了解更多内容。感谢大家一直以来对狼蚁SEO的支持!
编程语言
- PHP生成指定范围内的N个不重复的随机数
- 在ASP编程中使用数组
- 微信小程序 wx.login解密出现乱码的问题解决办法
- asp.net web页面元素的多语言化(多国语化)实现分享
- React操作真实DOM实现动态吸底部的示例
- AngularJS基础 ng-csp 指令详解
- 限制只能输入数字的实现代码
- .Net中生成二维的表格的代码 分享
- AngularJS基础 ng-click 指令示例代码
- 如何在smarty中增加类似foreach的功能自动加载数据
- 几行js代码实现自适应
- js学习总结之DOM2兼容处理this问题的解决方法
- Vue项目中添加锁屏功能实现思路
- javascript实现获取指定精度的上传文件的大小简单
- JS实现十分钟倒计时代码实例
- JavaScript使用setInterval()函数实现简单轮询操作的方