php随机数各种知识汇集

php随机数各种知识汇集在网站功能建设中 php 随机数是常用的一个功能 比如用户注册时随机产生的验证码 又比如用户注册时生成随机的一组密码后可自行修改 当用户需要重置密码的时候也需要生成一个随机的密码 随机数就根据特定的规则 或在一个数组范围内 所自动产生的字符串 在 php 开发中应用广泛 不过 php 中的随机数也分好几种不同的情况 首先来认识一下 PHP 提供的随机数函数 rand PHP 的 rand 函数将返回随机整数 具体使用方法如下 rand min max 可选参数 min 和 max 可以使 rand

在网站功能建设中,php随机数是常用的一个功能,比如用户注册时随机产生的验证码、又比如

用户注册时生成随机的一组密码后可自行修改,当用户需要重置密码的时候也需要生成一个随机的密码······随机数就根据特定的规则(或在一个数组范围内)所自动产生的字符串,在php开发中应用广泛,不过php中的随机数也分好几种不同的情况,首先来认识一下PHP提供的随机数函数rand()。

PHP的rand()函数将返回随机整数,具体使用方法如下:

rand(min,max)

可选参数min和max可以使rand() 返回0到RAND_MAX之间的伪随机整数。例如,想要5到15(包括 5 和 15)之间的随机数,用 rand(5, 15)。

下面我来看一个具体的示例,我们做一个基本的函数调用,不设置具体的参数,我们得到的随机数将不受min和max两个参数的限制。

echo(rand());?>

得到的结果: (随机结果)

php随机数

使用PHP生成指定区间内的随机数

echo(rand(1000,2000));?>

够简单吧,下面来点稍微有些难度的。在本文的开始我们说过,随机数的作用很大,我们可以用PHP随机数解决一些复杂的问题。

使用PHP获得一个集合中的随机元素

将设我们需要从一个数组中获得一个随机元素

$my_array=array('ASP','PHP','JAVASCRIPT','AJAX','CSS','JQUERY','HTML');   echo($my_array[rand(0,6)]);    ?>
$my_array=array('ASP','PHP','JAVASCRIPT','AJAX','CSS','JQUERY','HTML');   $repetition=rand(0,6);   for($i=0;$i<=$repetition;$i++){  echo('I am learning ' . $my_array[rand(0,6)]);   echo(' on w3cschool.cn');   }   ?>

我们得到的结果可能像下面这样:

随机元素

第一次运行我们得到三条结果

由于我们使用一个随机数限定显示的条数,所以得到的结果除了文章随机,显示的条数也是随机的,如下图:

随机数运行结果

第二次运行得到七条结果

接下来是一些php随机数的其他应用方法。

PHP生成32位随机数

使用token的方式,可以控制用户在这个时间内的权限,代码如下:

function genToken( $len = 32, $md5 = true ) {        # Seed random number generator           # Only needed for PHP versions prior to 4.2           mt_srand( (double)microtime()* );           # Array of characters, adjust as desired           $chars = array(               'Q', '@', '8', 'y', '%', '^', '5', 'Z', '(', 'G', '_', 'O', '`',               'S', '-', 'N', '<', 'D', '{', '}', '[', ']', 'h', ';', 'W', '.',               '/', '|', ':', '1', 'E', 'L', '4', '&', '6', '7', '#', '9', 'a',               'A', 'b', 'B', '~', 'C', 'd', '>', 'e', '2', 'f', 'P', 'g', ')',               '?', 'H', 'i', 'X', 'U', 'J', 'k', 'r', 'l', '3', 't', 'M', 'n',               '=', 'o', '+', 'p', 'F', 'q', '!', 'K', 'R', 's', 'c', 'm', 'T',               'v', 'j', 'u', 'V', 'w', ',', 'x', 'I', '$', 'Y', 'z', '*'           );           # Array indice friendly number of chars;           $numChars = count($chars) - 1; $token = '';           # Create random token at the specified length           for ( $i=0; $i<$len; $i++ )               $token .= $chars[ mt_rand(0, $numChars) ];           # Should token be run through md5?          if ( $md5 ) {               # Number of 32 char chunks               $chunks = ceil( strlen($token) / 32 ); $md5token = '';               # Run each chunk through md5               for ( $i=1; $i<=$chunks; $i++ )                   $md5token .= md5( substr($token, $i * 32 - 32, 32) );               # Trim the token               $token = substr($md5token, 0, $len);           } return $token;       }

N个不重复的随机数

php生成N个不重复的随机数

示例代码:

 
   运行结果:   2,3,4,6,7,8,9,10,11,12,13,16,20,21,22,24

若不进行此步骤,可能在删除重复值时造成键名不连续,不利于遍历。

用php成n个随机数,要求n个数的和等于100

$rand_array = array();function  get_rand_n($rand_array) {     $rand_number = mt_rand(1,9);    if(empty($rand_array)) {         $rand_array[] = $rand_number;        return get_rand_n($rand_array);     } else {         $count = 0;        foreach($rand_array as $item) {             $count += $item;         }        if($count<100) {            if($count+$rand_number == 100) {                 $rand_array[] = $rand_number;                return $rand_array;             } else if($count+$rand_number < 100) {                 $rand_array[] = $rand_number;                return get_rand_n($rand_array); // 回掉再次计算             } else { // 如果得到的值大于了100                 return get_rand_n($rand_array); // 重新获得随机数,知道为100的时候返回这个随机数数组             }         }     } } $rand_array = get_rand_n($rand_array); var_dump($rand_array);

运行结果:

php随机数各种知识汇集

php获取四位字母和数字的随机数

我们知道在php中简单的四位数的纯数字验证可以用rand(1000,9999)就可以了,但如果我们要得到字母和数字的随机四位数,那我们该如何写函数呢?下面是一个完整的实例。

 
 如果没有提供可选参数 min 和 max,mt_rand() 返回 0 到 RAND_MAX 之间的伪随机数。例如想要 0 到 46(包括 0 和 46)之间的随机数,用 mt_rand(0, 46)。 

指定长度的随机数

php生成指定长度的随机数

 
 ";   echo get_random(3);   echo "
";   echo get_random2(6);

php生成随机密码的三种方法

方法一:

1、在 33 – 126 中生成一个随机整数,如 35,

2、将 35 转换成对应的ASCII码字符 # 








function create_password($pw_length = 8){ $randpwd = '';for ($i = 0; $i < $pw_length; $i++) { $randpwd .= chr(mt_rand(33, 126)); }return $randpwd; }// 调用该函数,传递长度参数$pw_length = 6echo create_password(6);

方法二:

function generate_password( $length = 8 ) {// 密码字符集,可任意添加你需要的字符$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0!@#$%^&*()-_ []{}<>~`+=,.;:/?|'; $password = '';for ( $i = 0; $i < $length; $i++ ) {// 这里提供两种字符获取方式// 第一种是使用 substr 截取$chars中的任意一位字符;// 第二种是取字符数组 $chars 的任意元素// $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);$password .= $chars[ mt_rand(0, strlen($chars) - 1) ]; }return $password; }

方法三:

1、预置一个的字符数组 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符

2、通过array_rand()从数组 $chars 中随机选出 $length 个元素

3、根据已获取的键名数组 $keys,从数组 $chars 取出字符拼接字符串。该方法的缺点是相同的字符不会重复取。












function make_password( $length = 8 ){// 密码字符集,可任意添加你需要的字符$chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h','i', 'j', 'k', 'l','m', 'n', 'o', 'p', 'q', 'r', 's','t', 'u', 'v', 'w', 'x', 'y','z', 'A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I', 'J', 'K', 'L','M', 'N', 'O','P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z','0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!','@','#', '$', '%', '^', '&', '*', '(', ')', '-', '_','[', ']', '{', '}', '<', '>', '~', '`', '+', '=', ',','.', ';', ':', '/', '?', '|');// 在 $chars 中随机取 $length 个数组元素键名$keys = ($chars, $length); $password = '';for($i = 0; $i < $length; $i++) {// 将 $length 个数组元素连接成字符串$password .= $chars[$keys[$i]]; }return $password; }

时间效率对比

 
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229283.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午5:03
下一篇 2026年3月16日 下午5:03


相关推荐

  • synchronized偏向锁和轻量级锁_java轻量级锁,偏向锁,重量级锁

    synchronized偏向锁和轻量级锁_java轻量级锁,偏向锁,重量级锁今天简单了解了一下java轻量级锁和重量级锁以及偏向锁。看了看这篇文章觉得写的不错原文链接java 偏向锁、轻量级锁及重量级锁synchronized原理Java对象头与Monitorjava对象头是实现synchronized的锁对象的基础,synchronized使用的锁对象是存储在Java对象头里的。对象头包含两部分:Mark Word 和 Class Metadata Address其中Mark Word在默认情况下存储着对象的HashCode、分代年龄、锁标记位等以下是32位JVM的

    2022年8月8日
    5
  • 风控模型及特征的上线部署方法

    风控模型及特征的上线部署方法序言:作为年后的首篇实操干货文章,番茄风控一如既往向业内小伙伴输出相关的干货文章。有实操能落地,有数据可撸码,继续将会是番茄风控提供给各位小伙伴的业内标配内容。近期,我们花费了时间容整理了目前业内各位小伙伴关心的内容,本次文章是其中一个问题就是模型跟规则在现有的风控系统内是如何规范上线的,基于此,我们给大家带来了这样的一篇内容。本次文章内容翔实,章节就有四大部分,内容绝对干货满满,实操性十足。老规矩,文章中提及的更详情(数据集+代码内容)可以直接到知识课堂中下载学习。本文有理论,有方法,有实操,还有数

    2022年5月4日
    74
  • python中lb_python pdfminer

    python中lb_python pdfminer1.准备LMDB和SQLite/MySQL等关系型数据库不同,属于key-value数据库(把LMDB想成dict会比较容易理解),键key与值value都是字符串。安装:pipinstalllmdb使用时importlmdb。2.操作流程概况地讲,操作LMDB的流程是:通过env=lmdb.open()打开环境通过txn=env.begin()建立事务通过txn.put(k

    2026年4月18日
    5
  • Python下载小说 -XXOO[通俗易懂]

    Python下载小说 -XXOO[通俗易懂]前言作为一个十年老书虫,对于小说来源深有体会,从买实体书到电子书下载。各种不爽,在这里也是满足下自己迫切的心情,来,撸一发代码,找几本小说看看。一、搜索入口这里也是找了一个良心的网站来操作的。其他的下载不是充钱就是会员或者空白。http://www.bookshuku.com/是不是很直白,上代码#name小说名称defsearchTxt(name):url=’http://www.bookshuku.com/search.html’hea…

    2022年7月17日
    31
  • ribbon负载均衡策略有哪几种_负载均衡策略的是

    ribbon负载均衡策略有哪几种_负载均衡策略的是目录1.基于Ribbon方式的负载均衡,Netflix默认提供了七种负载均衡策略,2.@LoadBalanced1.基于Ribbon方式的负载均衡,Netflix默认提供了七种负载均衡策略,对于SpringCloudAlibaba解决方案中又提供了NacosRule策略,默认的负载均衡策略是轮训策略。如图所示:当系统提供的负载均衡策略不能满足我们需求时,我们还可以基于IRule接口自己定义策略.Ribbon是什么?(Netflix公司提供的负载均衡…

    2022年10月13日
    6
  • 最简单的在IntelliJ IDEA导入一个本地项目教程

    最简单的在IntelliJ IDEA导入一个本地项目教程nbsp nbsp nbsp nbsp 由于在学习中 我们经常会用到别人已经开发好的某些项目 要学习别人的东西 你肯定的先导入编辑器中自己试试吧 eclipse 大家都会 可是换成 idea 开发又该怎样导入呢 整合最近我已需要学习别人的项目 希望把这个过程记录下来帮助大家学习 那么我们就开始吧第二步找到自己要导入的项目 然后点击 ok nbsp 如果是 maven 就选择 maven 剩下的你就一路点击 next 就 ok 最

    2025年11月3日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号