基于php 随机数的深入理解


Posted in PHP onJune 05, 2013

php mt_srand 播下一个更好的随机数发生器种子
mt_srand
(PHP 3 >= 3.0.6, PHP 4, PHP 5)
mt_srand -- 播下一个更好的随机数发生器种子
说明

void mt_srand ( int seed )

用 seed 来给随机数发生器播种。从 PHP 4.2.0 版开始,seed 参数变为可选项,当该项为空时,会被设为随时数。
例子 1. mt_srand() 范例
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php
// seed with microseconds
function make_seed()
{
    list($usec, $sec) = explode(' ', microtime());
    return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();
?>

注: 自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现已自动完成。
参见 mt_rand(),mt_getrandmax() 和 srand()。
 
PHP mt_rand() 函数
定义和用法
mt_rand() 使用 Mersenne Twister 算法返回随机整数。
语法
mt_rand(min,max)

说明
如果没有提供可选参数 min 和 max,mt_rand() 返回 0 到 RAND_MAX 之间的伪随机数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用 mt_rand(5, 15)。
很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。
提示和注释
注释:自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现在已自动完成。
注释:在 3.0.7 之前的版本中,max 的含义是 range 。要在这些版本中得到和上例相同 5 到 15 的随机数,简短的例子是 mt_rand (5, 11)。
例子
在本例中,我们会返回一些随机数:
<?phpecho(mt_rand());
echo(mt_rand());
echo(mt_rand(10,100));
?>

输出类似:
3150906288
513289678
35  
注意:上面这个函数给出的随机整数,数字之外的字符是不会出来的,若想其他字符产生,就需另自定义方法,如下所示:
<?php
/*
 * $length:随机数字符串的长度
 * $type:产生随机数的类型
 * */
function random($length, $type = "") {
    $chars = !$type ? "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz" : "0123456789abcdef";
    $max = strlen($chars) - 1;
    mt_srand((double)microtime() * 1000000);
    for($i = 0; $i < $length; $i++) {
        $string .= $chars[mt_rand(0, $max)];
    }
    return $string;
}
$var=random(32,'haha');
echo($var);
?>

输出:
fe61e294e5f46437cb3a92b92643ead6
PHP 相关文章推荐
php下实现伪 url 的超简单方法[转]
Sep 24 PHP
PHP页面间传递参数实例代码
Jun 05 PHP
一周让你学会PHP 不错的学习资料
Feb 06 PHP
简单的php 验证图片生成函数
May 21 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 PHP
php json_encode()函数返回json数据实例代码
Oct 10 PHP
自编函数解决pathinfo()函数处理中文问题
Nov 03 PHP
php实现的简易扫雷游戏实例
Jul 09 PHP
php图片水印添加、压缩、剪切的封装类实现
Apr 18 PHP
PHP防止刷新重复提交页面的示例代码
Nov 11 PHP
php简单备份与还原MySql的方法
May 09 PHP
PHP设计模式之命令模式示例详解
Dec 20 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
Jun 05 #PHP
PHP中__get()和__set()的用法实例详解
Jun 04 #PHP
深入PHP运行环境配置的详解
Jun 04 #PHP
PHP运行环境配置与开发环境的配置(图文教程)
Jun 04 #PHP
如何设置mysql允许外网访问
Jun 04 #PHP
PHP在线生成二维码(google api)的实现代码详解
Jun 04 #PHP
PHP多线程批量采集下载美女图片的实现代码(续)
Jun 03 #PHP
You might like
我的论坛源代码(八)
2006/10/09 PHP
php下保存远程图片到本地的办法
2010/08/08 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
从阶乘函数对比Javascript和C#的异同
2012/05/31 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
python调用百度语音REST API
2018/08/30 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
Blue Nile中国官网:全球知名的钻石和珠宝网络零售商
2020/03/22 全球购物
成人教育自我鉴定
2013/11/01 职场文书
读群众路线心得体会
2014/03/07 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
OpenCV-Python实现油画效果的实例
2021/06/08 Python
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android