热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

PHP内置函数生成随机数实例

在本篇文章里小编给大家分享了关于PHP内置函数生成随机数实例内容,对此有兴趣的朋友们可以学习下。

1. rand函数

rand() 函数可以不加任何参数,就可以生成随机整数。如果要设置随机数范围,可以在函数中设置 min 和 max 的值。如果需要生成随机数的种子,使用 srand 函数配置。

echo rand();           // 生成 0~RAND_MAX 之间的随机数,Windows 系统下 RAND_MAX 的值为 32767,RAND_MAX 可以用函数 getrandmax() 获得
echo rand(1000000, 9999999);   // 生成 1000000~9999999 之间的随机数
$seed = time();          // 使用时间作为种子源
srand($seed);           // 播下随机数发生器种子
echo rand();           // 根据种子生成 0~32768 之间的随机数。如果 $seed 值固定,则生成的随机数也不变
echo rand(1000000, 9999999);   // 根据种子生成 1000000~9999999 之间的随机数。如果 $seed 值固定,则生成的随机数也不变

2. mt_rand函数

mt_rand() 是使用 Mersenne Twister 算法返回随机整数,与 rand() 函数的主要区别是:mt_rand()产生随机数值的平均速度比 libc 提供的 rand() 快四倍,并且播种函数使用mt_srand(),而不是srand()。虽然有这点区别,但是它们的使用方法还是相似的,如下:

echo mt_rand();          // 生成 0~RAND_MAX 之间的随机数,Windows 系统下 RAND_MAX 的值为 2147483647(与rand()中的 RAND_MAX 不同),RAND_MAX 可以用函数 mt_getrandmax() 获得
echo mt_rand(1000000, 9999999);  // 生成 1000000~9999999 之间的随机数,不受系统 RAND_MAX 影响
$seed = time();          // 使用时间作为种子源
mt_srand($seed);         // 播下随机数发生器种子
echo rand();           // 根据种子生成 0~RAND_MAX 之间的随机数,如果 $seed 值固定,则生成的随机数也不变
echo rand(1000000, 9999999);   // 根据种子生成 1000000~9999999 之间的随机数,如果 $seed 值固定,则生成的随机数也不变

说明:rand() 和 mt_rand() 两个函数生成的随机数都是整数,不会包含英文字母。

3. uniqid函数

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。默认生成ID的长度为13位或者23位,由英文字母和数字组成。uniqid() 函数有两个参数,格式如下:

uniqid(prefix,more_entropy)

其中,

prefix:生成ID的前缀

more_entropy:是否添加额外的熵

如下的程序,

echo uniqid();          // 生成13位字符串,如:55f540e273e93
echo uniqid('one.');       // 生成前缀为one.加13位随机字符的字符串,如:one.55f540e273e93
echo uniqid('two.', true);    // 生成前缀为two.加23位随机字符的字符串(加了熵),如:two.55f540e273e932.77804707,比上面的多了 10 位,即多了:2.77804707

说明:由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数。


推荐阅读
  • 泛圈企业云盘:打造高效灵活的协同平台提高企业办公效率
    云计算作为一种新的模式,给企业信息化的发展带来了巨大的变化。其中,企业云盘是一种可以快速被接受的企业云应用,因为在企业云盘存储中,所有云服务带来的风险都会大大降低。将文档管理系统本 ... [详细]
  • python自学教程哪里好,python比较好的教程
    本文目录一览:1、想学python去哪里比较好? ... [详细]
  • 在实际开发中,现在安卓端和后台之间的数据交互,一般都是用JSON来传递数据信息。JSON大家一般都比较熟悉。我这边就以实际项目中的后台传过来的情况和大家分析下及如何处理。比如后台返 ... [详细]
  • EIGRP增强内部网关路由协议协议号88IGRPEIGRP都是CISCO的私有协议.---高级距离矢量协议1、是唯一的一种LSDV的混合协议2、EIGRP拥有目前最快的网络路由收敛 ... [详细]
  • JNI技术实践小结转自http:sett ... [详细]
  • 詮釋為何一切的參數通報的都是值,不可能經由歷程援用通報參數“值”的寄義這裏的值,指的是,複製傳進來的對象的地點,把這個複製值賦給參數援用通報的寄義直接將變量自身的地點傳進去,直接把 ... [详细]
  • java怎么实现非下降数组
    今天小编给大家分享一下java怎么实现非下降数组的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给 ... [详细]
  • 在Oracle中执行动态SQL的几种方法在一般的sql操作中,sql语句基本上都是固定的,如:SELECTt.empno,t.ename FROMscott.emptWHEREt. ... [详细]
  • 重学数据结构之链表篇
    本文是重学数据结构系列文章的第二篇,本文和大家一起探讨链表的相关知识。重学数据结构之数组篇文章目录链表是怎么样的数据结构链表的特点常见的链表结构单链表双向链表循环链表链表or数组链 ... [详细]
  • PHPcURL获取微信公众号access_token的实例php实例:这篇文章主要介绍了PHPcURL获取微信公众号access_token的实例,需要的朋友可以参考下1.开发微信 ... [详细]
  • ROC曲线原理及Python实现
    受试者工作特征曲线(receiveroperatingcharacteristiccurve,简称ROC曲线),是比较两个分类模型好坏的可视化工具ROC曲线的作用:1.较容易地查出 ... [详细]
  • 最近想用js做一个简单的计算器,不过网上的例子好像大部分都是直接从左到右挨个计算,就好像1+2*5,就会先计算1+2,再计算3*5,并没有实现运算符的优先级,这里找到了一种方法实现,来总结一下。不过这 ... [详细]
  • DFS基本概念步骤优缺点典型例题递推基本概念直接或者间接调用自身的算法称为递归算法一般数据n ... [详细]
  • 编程语言是从哪蹦出来的——大型伦理寻根现场
    Hello,我是Alex007,一个热爱计算机编程和硬件设计的小白,为啥是007呢?因为叫Alex的人太多了,再加上每天007的生活,Alex007就诞生了。聊一聊编程到底是啥,怎 ... [详细]
  • 进修JavaScript的原型笔记
    JavaScript的原型(prototype、__proto__、constructor)组织函数:functionFoo(){};实例对象:letf1newFoo;leto1n ... [详细]
author-avatar
手机用户2502939381
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有