热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

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

方法一:

$numbers = range (1,50); 

//shuffle 将数组顺序随即打乱 

shuffle ($numbers); 

//array_slice 取该数组中的某一段 

$num=6; 

$result = array_slice($numbers,0,$num); 

print_r($result); 

?>


方法二:

$numbers = range (1,20); 

//播下随机数发生器种子,可有可无,测试后对结果没有影响

srand ((float)microtime()*1000000); 

shuffle ($numbers); 

//跳过list第一个值(保存的是索引)

while (list(, $number) = each ($numbers)) { 

echo "$number "; 

?>


方法三:

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个不重复的值


方法四:

代码如下:


$tmp=array(); 

while(count($tmp)<5){ 

$tmp[]=mt_rand(1,20); 

$tmp=array_unique($tmp); 

print_r($tmp);

?>

方法五:

代码如下:


$tmp = range(1,30);

print_r(array_rand($tmp,10));

?>


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


推荐阅读
  • 本文介绍了如何在C#应用程序中有效隐藏SQLCMD命令行窗口,确保程序运行时不会弹出黑色命令提示符窗口。 ... [详细]
  • 本文详细介绍超文本标记语言(HTML)的基本概念与语法结构。HTML是构建网页的核心语言,通过标记标签描述页面内容,帮助开发者创建结构化、语义化的Web页面。 ... [详细]
  • Windows 环境下重启 MySQL 服务的方法
    本文详细介绍了在 Windows 操作系统中如何正确地重启 MySQL 数据库服务,包括常见的权限问题及其解决方案。 ... [详细]
  • 降噪耳机与普通耳机的差异解析
    对于不太了解耳机分类的朋友来说,区分降噪耳机和普通耳机可能有些困难。本文将详细对比这两类耳机在降噪技术、效果及佩戴舒适度等方面的差异,并提供选择建议。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细介绍了 iBatis.NET 中的 Iterate 元素,它用于遍历集合并重复生成每个项目的主体内容。通过该元素,可以实现类似于 foreach 的功能,尽管 iBatis.NET 并未直接提供 foreach 标签。 ... [详细]
  • 蒟蒻林荫小复习——莫比乌斯反演
    莫比乌斯反演积性函数:对于函数f,如果有质数p,q,使得f(p)f(q)f(pq),则函数f为积性函数设积性函数f,有和函数 显然,F由f决定,这种关系是否可以反过来?  F(1) ... [详细]
  • DedeCMS栏目列表调用中currentstyle中也支持autoindex的方法
    在《DedeCMS自增函数autoindexitemindex用法全解析》中,余斗给大家详细说明了DedeCMS中的autoindex和itemindex的日常用法,而我们在DedeCMS建站过程中,调用顶级栏目之类的会用到currentstyle属性,来实现当 ... [详细]
  • JavaScript 中创建对象的多种方式
    本文介绍了 JavaScript 中创建对象的几种常见方法,包括字面量形式、构造函数、原型对象等。每种方法都有其特点和适用场景,通过对比分析,帮助开发者选择最适合的方式。 ... [详细]
  • 随着Redis功能的不断增强和稳定性提升,其应用范围日益广泛,成为软件开发人员不可或缺的技能之一。本文将深入探讨Redis集群的部署与优化,包括主从备份机制、哨兵模式以及集群功能,帮助读者全面理解并掌握Redis集群的应用。 ... [详细]
  • 本文详细介绍了游戏中胜场数和净胜场数的计算方式,通过公式解析和实例说明,帮助玩家更好地理解这两项统计数据。文章还提供了多种计算方法及其应用场景,确保读者能够全面掌握相关知识。 ... [详细]
  • 华为Mate 60 Pro截屏指南
    了解如何在华为Mate 60 Pro上进行截屏操作。本文将详细介绍多种便捷的截屏方法,帮助用户快速掌握这一实用功能。 ... [详细]
  • 本教程将指导您如何运用Photoshop中的笔刷、路径等工具,通过高超的控制技巧,从简单图形出发,打造出令人惊艳的光束效果。适合有一定基础的用户进行尝试。 ... [详细]
  • 本文探讨了在使用Selenium进行自动化测试时,由于webdriver对象实例化位置不同而导致浏览器闪退的问题,并提供了详细的代码示例和解决方案。 ... [详细]
  • 探讨了如何解决Ajax请求响应时间过长的问题。本文分析了一个从服务器获取少量数据的Ajax请求,尽管服务器已经对JSON响应进行了缓存,但实际响应时间仍然不稳定。 ... [详细]
author-avatar
宇智臣风
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有