PHP生成不重复随机数的方法
2024-08-25 00:49:46
无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地。在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下。
方法一:
代码如下: <?php
$numbers = range (,);
//shuffle 将数组顺序随即打乱
shuffle ($numbers);
//array_slice 取该数组中的某一段
$num=;
$result = array_slice($numbers,,$num);
print_r($result);
?>
方法二:
代码如下: <?php
$numbers = range (,);
//播下随机数发生器种子,可有可无,测试后对结果没有影响
srand ((float)microtime()*);
shuffle ($numbers);
//跳过list第一个值(保存的是索引)
while (list(, $number) = each ($numbers)) {
echo "$number ";
}
?>
方法三:
代码如下: <?php
function NoRand($begin=,$end=,$limit=){
$rand_array=range($begin,$end);
shuffle($rand_array);//调用现成的数组随机排列函数
return array_slice($rand_array,,$limit);//截取前$limit个
}
print_r(NoRand());
?>
上述可以在1-20间随机产生5个不重复的值
方法四:
代码如下: <?php
$tmp=array();
while(count($tmp)<){
$tmp[]=mt_rand(,);
$tmp=array_unique($tmp);
}
print_r($tmp);
?>
方法五:
代码如下: <?php
$tmp = range(,);
print_r(array_rand($tmp,));
?>
这个可能是比叫简单的了(ps:如果在range中指定了步长,就必须注意array_rand的第二个参数是否超出$tmp的长度)。
最新文章
- ACM : POJ 2676 SudoKu DFS - 数独
- CentOS6.5安装Eclipse
- ArchLinux+Win10双系统的Grub配置
- linux svn hooks代码自动更新至项目
- C++开发的基于UDP协议的聊天工具
- AJax中post与get请求注意事项
- [LintCode] Coins in a Line 一条线上的硬币
- PHP 中的BOM BUG
- 实用的透明背景mark图标
- JQuery 中的Ajax
- JS字符串拼接优化
- Using StructureMap DI and Generic Repository
- 笔记整理——linux
- CSS3-loading动画(五)
- [BZOJ]1069 最大土地面积(SCOI2007)
- [HNOI2016]矿区
- HDFS的操作SHELL和API
- BZOJ2729 HNOI2012排队(组合数学+高精度)
- 管道pipe与dup结合使用
- vue 组件 模板中根数据绑定需要指明路径并通信父