基于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调用mysql存储过程
Feb 14 PHP
PHP生成HTML静态页面实例代码
Aug 31 PHP
php.ini中date.timezone设置分析
Jul 29 PHP
PHP 数组和字符串互相转换实现方法
Mar 26 PHP
探讨:如何使用PhpDocumentor生成文档
Jun 25 PHP
PHP提高编程效率的20个要点
Sep 23 PHP
PHP引用返回用法示例
May 28 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
php nginx 实时输出的简单实现方法
Jan 21 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
Jul 17 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 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
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
去除php注释和去除空格函数分享
2014/03/13 PHP
php获取根域名方法汇总
2014/10/28 PHP
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
Python中取整的几种方法小结
2017/01/06 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
2018/10/21 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
英国日常交易网站:Wowcher
2018/09/04 全球购物
毕业生自荐书模版
2014/01/04 职场文书
物流业务员岗位职责
2014/02/08 职场文书
高一新生军训感言
2014/03/02 职场文书
临床医学专业求职信
2014/08/08 职场文书
优秀高中学生评语
2014/12/30 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
小学体育组工作总结
2015/08/13 职场文书
2016年感恩节寄语
2015/12/07 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
mybatis 获取更新记录的id
2022/05/20 Java/Android
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL