PHP函数表示生成随机数,编写php程序产生一个随机数

PHP函数表示生成随机数,编写php程序产生一个随机数,PHP生成随机数的方法总结

本篇文章给大家总结了服务器端编程语言(专业超文本预处理器的缩写)生成随机数的方法并把相关的代码做了分享,有需要的读者们参考学习下吧。

第一种方法用mt_rand()

函数GetRandStr($length){

$ str=' abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz 0123456789 ';

$ len=strlen($ str)-1;

$ randstr=

for($ I=0;一美元长度;$i ){

$num=mt_rand(0,$ len);

$randstr .=$ str[$ num];

}

返回$ randstr

}

$ number=GetRandStr(6);

回声$ number

第二种方法(最快的)

函数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中随机取$长度个数组元素键名

$keys=array_rand($chars,$ length);

$ password=

for($ I=0;一美元长度;$i)

{

//将$长度个数组元素连接成字符串

$密码.=$ chars[$ keys[$ I]];

}

返回$ password

}

第三种取当时时间戳

函数get_password( $length=8)

{

$str=substr(md5(time()),0,$ length);//md5加密,时间()当前时间戳

返回$ str

}

第四种打乱字符串

函数getrandstr(){

$ str=' abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz 1234567890 ';

$ randStr=str _ shuffle($ str);//打乱字符串

$rands=substr($randStr,0,6);//substr(字符串,起始,长度);返回字符串的一部分

返回美元兰特

}

//开始创建验证码(直接用函数生成,比较方便快捷)

$code=兰特(10000,99999);

php mt_rand生成0~1随机小数的效果比较

lcg _值说明

浮点lcg_value ( void)

lcg_value()返回范围为(0, 1) 的一个伪随机数。本函数组合了周期为2^31 - 85 和2^31 - 249 的两个同余发生器。本函数的周期等于这两个素数的乘积。

返回:范围为(0, 1) 的伪随机数。

?服务器端编程语言(专业超文本预处理器的缩写)

for($ I=0;$ i5$i ){

echo lcg_value().PHP _ EOL

}

输出:

0.11516515851995

0.064684551575297

0.68275174031189

0.55730746529099

0.70215008878091

两种生成0~1随机小数方法进行比较

1.执行时间比较

执行10万次基于mt _兰德()与mt_getrandmax()算法的运行时间

?服务器端编程语言(专业超文本预处理器的缩写)

/**

* 生成0~1随机小数

* @param Int $min

* @ param Intmax

* @返回浮点

*/

函数randFloat($min=0,$max=1){

return $ min mt _ rand()/mt _ getrandmax()*($ max-$ min);

}

//获取微时间

函数get_microtime(){

list($usec,$sec)=explode(' ',microtime());

return(float)$ usec(float)$ sec;

}

//记录开始时间

$ start time=get _ microtime();

//执行10万次获取随机小数

for($ I=0;10万美元;$i ){

兰德浮动();

}

//记录结束时间

$ end time=get _ microtime();

//输出运行时间

printf('运行时间%f毫秒\r\n ',($结束时间-$开始时间)* 1000);

输出:运行时间266.893148毫秒

执行10万次lcg_value()的运行时间

?服务器端编程语言(专业超文本预处理器的缩写)

//获取微时间

函数get_microtime(){

list($usec,$sec)=explode(' ',microtime());

return(float)$ usec(float)$ sec;

}

//记录开始时间

$ start time=get _ microtime();

//执行10万次获取随机小数

for($ I=0;10万美元;$i ){

lcg _ value();

}

//记录结束时间

$ end time=get _ microtime();

//输出运行时间

printf('运行时间%f毫秒\r\n ',($结束时间-$开始时间)* 1000);

输出:运行时间86.178064毫秒

执行时间上比较,因为lcg_value()直接是服务器端编程语言(专业超文本预处理器的缩写)原生方法,而mt _兰德()与mt_getrandmax()需要调用两个方法,并需要进行计算,因此lcg_value()的执行时间大约快3倍。

2.随机效果比较

基于mt _兰德()与mt_getrandmax()算法的随机效果

?服务器端编程语言(专业超文本预处理器的缩写)

/**

* 生成0~1随机小数

* @param Int $min

* @ param Intmax

* @返回浮点

*/

函数randFloat($min=0,$max=1){

返回$ min mt _ rand()/mt _ samp max()*($ max-$ min);

}

标头('内容类型:影像/png’);

$im=imagecreatetruecolor(512,512);

$ color 1=imagecolorlallocate($ im,255,255,255);

$ color 2=imagecolorlallocate($ im,0,0,0);

for($ y=0);512美元和512美元;$y)>

for($ x=0);512美元;$x)>

$ rand=rand float();

if(round($rand,2)=0.5)}

imagesetpixel($im、$x、$y、$ color 1);

}否则

imagesetpixel($im、$x、$y、$ color 2);

}

}

}

imagepng($ im);

image destroy($ im);

lcg_value()的随机效果

?PHP?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

标头('内容类型:影像/png’);

$im=imagecreatetruecolor(512,512);

$ color 1=imagecolorlallocate($ im,255,255,255);

$ color 2=imagecolorlallocate($ im,0,0,0);

for($ y=0);512美元和512美元;$y)>

for($ x=0);512美元;$x)>

$ rand=lcg _ value();

if(round($rand,2)=0.5)}

imagesetpixel($im、$x、$y、$ color 1);

}否则

imagesetpixel($im、$x、$y、$ color 2);

}

}

}

imagepng($ im);

image destroy($ im);

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 七种php开发环境搭建工具有哪些,七种php开发环境搭建工具包括
  • 七种php开发环境搭建工具有哪些,七种php开发环境搭建工具包括,七种PHP开发环境搭建工具
  • php高并发三种解决方法,php 高并发解决方案
  • php高并发三种解决方法,php 高并发解决方案,PHP解决高并发问题(opcache)
  • php邮件发送的两种方式区别,php邮件发送的两种方式是什么
  • php邮件发送的两种方式区别,php邮件发送的两种方式是什么,php邮件发送的两种方式
  • php跳转页面的几种实现方法详解图,php跳转页面的几种实现方法详解视频
  • php跳转页面的几种实现方法详解图,php跳转页面的几种实现方法详解视频,PHP跳转页面的几种实现方法详解
  • PHP购物车,php立即购买和购物车功能
  • PHP购物车,php立即购买和购物车功能,php实现购物车功能(上)
  • php读取pdf数据,php pdf读取
  • php读取pdf数据,php pdf读取,PHP中使用mpdf 导出PDF文件的实现方法
  • php网站判断用户是否是手机访问的方法有哪些,php如何判断用户是否登录
  • 留言与评论(共有 条评论)
       
    验证码: