基于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通过COM使用ADODB的简单例子
Dec 31 PHP
PHP Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
smarty的保留变量问题
Oct 23 PHP
php 设计模式之 工厂模式
Dec 19 PHP
php 数据库字段复用的基本原理与示例
Jul 22 PHP
PHP Session机制简介及用法
Aug 19 PHP
php查询ip所在地的方法
Dec 05 PHP
PHP常见数组函数用法小结
Mar 21 PHP
PHP文件操作详解
Dec 30 PHP
Laravel下生成验证码的类
Nov 15 PHP
php实现微信支付之企业付款
May 30 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
Mar 23 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
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
php中获得视频时间总长度的另一种方法
2011/09/15 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
PHP中单引号与双引号的区别分析
2014/08/19 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
python读取文件名称生成list的方法
2018/04/27 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
python实现拼接图片
2020/03/23 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
应聘医学检验人员自荐信
2013/09/27 职场文书
应届生妇产科护士求职信
2013/10/27 职场文书
竞职演讲稿范文
2014/01/11 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
群众路线个人剖析材料
2014/10/07 职场文书
教师年度个人总结
2015/02/11 职场文书
档案管理员岗位职责
2015/02/12 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
暂住证明怎么写
2015/06/19 职场文书
主婚人致辞精选
2015/07/28 职场文书
Python实现视频中添加音频工具详解
2021/12/06 Python