再整理一个php 产生不重复随机数5个方法

无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地。在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下(ps:方法1、4、5是我常用的,其余来自网络整理)

方法一:

 代码如下 复制代码
<?php
$numbers = range (1,50);
//shuffle 将数组顺序随即打乱
shuffle ($numbers);
//array_slice 取该数组中的某一段
$num=6;
$result = array_slice($numbers,0,$num);
print_r($result);
?>

 

方法二:

 代码如下 复制代码
<?php
$numbers = range (1,20);
//播下随机数发生器种子,可有可无,测试后对结果没有影响
srand ((float)microtime()*1000000);
shuffle ($numbers);
//跳过list第一个值(保存的是索引)
while (list(, $number) = each ($numbers)) {
echo "$number ";
}
?>

 

方法三:

 代码如下 复制代码
<?php
function NoRand($begin=0,$end=20,$limit=5){
$rand_array=range($begin,$end);
shuffle($rand_array);//调用现成的数组随机排列函数
return array_slice($rand_array,0,$limit);//截取前$limit个
}
print_r(NoRand());
?>

 

上述可以在1-20间随机产生5个不重复的值

方法四:

 代码如下 复制代码
<?php
$tmp=array();
while(count($tmp)<5){
$tmp[]=mt_rand(1,20);
$tmp=array_unique($tmp);
}
print_r($tmp);
?>

 

方法五:

 代码如下 复制代码

<?php
$tmp = range(1,30);
print_r(array_rand($tmp,10));
?>
 

这个可能是比叫简单的了(ps:如果在range中指定了步长,就必须注意array_rand的第二个参数是否超出$tmp的长度)。

PHP提供非常丰富的数组函数,产生随机数大多可以从数组这个角度出发,若你还有方法提供,欢迎给出,文章将持续更新。

时间: 2024-09-18 04:53:47

再整理一个php 产生不重复随机数5个方法的相关文章

数字-按照设定概率产生不重复随机数

问题描述 按照设定概率产生不重复随机数 有没有知道如何按照一定概率生成无重复数字,例如1 5% 2 4% 3 1% 4 15% 2 4% 3 1% 4 %10 5 7%%10 5 7%,从中随机不重复选出3个数,随机100000次,总体概率符合设计的随机要求. 可以设定概率值,然后从中随机数字,随机的三个数字不能有重复的,计算随机100000次后,每个数字的出现概率与设定的概率接近一致1 4.999% ..... 解决方案 思路 产生一个0~1的浮点整数,它是均匀分布的,那么它小于0.05的概率

PHP产生不重复随机数的5个方法总结_php实例

无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地.在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下(ps:方法1.4.5是我常用的,其余来自网络整理) 方法一: 复制代码 代码如下: <?php $numbers = range (1,50); //shuffle 将数组顺序随即打乱 shuffle ($numbers); //array_slice 取该数组中的某一段 $num=6; $result =

判断一个小时之内是否重复发送了10次短信(2)

判断一个小时之内是否重复发送了10次短信(2) 可以先参考我上一篇博客: http://huangkunlun520.blog.51cto.com/2562772/1705080 每次发短信,都写入redis: Java代码   RedisHelper.getInstance().saveKeyCache("limit_one_hour"+ip, "" + System.currentTimeMillis(), "");     同时获取该ip对

ASP生成随机数 ASP生成不重复随机数_应用技巧

ASP生成随机数: 复制代码 代码如下: Randomize '纯随机,不重复 Response.write Int((999999999 * Rnd) + 111111111) '生成111111111到999999999之间随机数 ASP不重复随机数: 方法一: 已测 使用的时候需要注意里面的分割字符串的字符. 复制代码 代码如下: <% '生成的是一个不重复的数组 Function GetRnd(lowerNum,upperNum) Dim unit,RndNum,Fun_X unit =

100分、100分、求指定范围不重复随机数。

问题描述 500至69859415间,6000个不重复随机数.要求效率高一些.好了马上给分,在线等,20点前结贴. 解决方案 解决方案二:对了,我是用asp.net(C#)的,所以,要求是C#的.谢谢.解决方案三:随机生成后检测是否存在后,不存在就放入数组,存在就重来,解决方案四:好象只有楼上的办法现成的我就有java的没c#的没办法解决方案五:学习.解决方案六:mark解决方案七:Randomrand=newRandom();stringstrInt="";while(true){i

ASP生成随机数 ASP生成不重复随机数

ASP生成随机数: 复制代码 代码如下:Randomize '纯随机,不重复 Response.write Int((999999999 * Rnd) + 111111111) '生成111111111到999999999之间随机数 ASP不重复随机数: 方法一: 已测 使用的时候需要注意里面的分割字符串的字符.复制代码 代码如下: <% '生成的是一个不重复的数组 Function GetRnd(lowerNum,upperNum) Dim unit,RndNum,Fun_X unit = u

vs2013-VS2013 使用了extern定义变量,不能再另一个cpp中调用

问题描述 VS2013 使用了extern定义变量,不能再另一个cpp中调用 VS2013 在一个cpp内定义了 extern int sc = 0; 在另一个cpp中调用的时候 显示"未定义标识符" 如何解决?谢谢 解决方案 在文件1中定义全局变量: int sc = 0; 文件2中先声明再使用 extern int sc; //声明是外部全局变量 解决方案二: 写个类似全局类型的变量 或写一个类中,引用这个类 解决方案三: extern 时不能赋初值吧. 在一个 CPP 中定义一个

给我3亿美元我能再做一个新浪-空中网杨宁

新浪 由俭入奢易,由奢入俭难.1999年,杨宁作为第一批高举互联网大旗回国创业的"海龟"之一,与周云帆.陈一舟共同创办了ChinaRen网站.但 花钱花到手软的美景在一夜间化为一地泡沫,2000年9月14日,第一轮互联网泡沫破灭,杨宁和他的创业伙伴面对无法发放员工工资的窘境,不得不选择并入 搜狐.所谓置之死地而后生,2002年3月18日,杨宁再次创业,与周云帆创办了"空中网",东山再起.2004年7月9日,空中网在美国纳斯达克挂牌上 市,是中国企业从成立到纳斯达克上

教大家一个让数据不再重复的方法

    不知道你是不是还是为数据重复烦恼呢?近天在这里教大家一个让数据不再重复的方法 自定义Excel公式!     大家在使用Excel2007编辑工作表格时经常要输入大量数据,有时要求输入的这些数据是不允许重复的,例如常见的身份证号码等,一旦错误输入查找起来那可是相当麻烦的一件事.对于这个问题,其实我们可以自定义公式,让Excel对重复数据能够自动弹出警告信息,以便及时提醒操作人员. Step1:运行Excel 2007程序并新建一个工作表格,然后按下"Ctrl+A "组合键全选该