基于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下的权限算法的实现
Apr 28 PHP
学习php笔记 字符串处理
Oct 19 PHP
PHP判断指定时间段的2个方法
Mar 14 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 PHP
php数组查找函数总结
Nov 18 PHP
通过php添加xml文档内容的方法
Jan 23 PHP
PHP常用的三种设计模式汇总
Aug 28 PHP
PHP之十六个魔术方法详细介绍
Nov 01 PHP
Laravel实现autoload方法详解
May 07 PHP
PHP实现微信商户支付企业付款到零钱功能
Sep 30 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
Jun 03 PHP
php tpl模板引擎定义与使用示例
Aug 09 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读取xml方法介绍
2013/01/12 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
浅谈PHP封装CURL
2019/03/06 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
jQuery+ajax的资源回收处理机制分析
2017/01/07 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
Python中optparser库用法实例详解
2018/01/26 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
如何使用Python发送HTML格式的邮件
2020/02/11 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
运动会解说词50字
2014/01/18 职场文书
甜美蛋糕店创业计划书
2014/01/30 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
大学生见习总结报告
2015/06/24 职场文书
婚宴致辞
2015/07/28 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
把77A收信机改造成收音机
2022/04/05 无线电