基于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 相关文章推荐
通过JavaScript或PHP检测Android设备的代码
Mar 09 PHP
php 日期和时间的处理-郑阿奇(续)
Jul 04 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
php cookie使用方法学习笔记分享
Nov 07 PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
Jul 14 PHP
无需数据库在线投票调查php代码
Jul 20 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
php7 安装yar 生成docker镜像
May 09 PHP
php封装的pdo数据库操作工具类与用法示例
May 08 PHP
Laravel关系模型指定条件查询方法
Oct 10 PHP
PHP 99乘法表的几种实现代码
Oct 13 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将数据导入到Foxmail
2006/10/09 PHP
php&amp;java(三)
2006/10/09 PHP
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
document.write的几点使用心得
2014/05/14 Javascript
js数组的基本操作(很全自己整理的)
2014/10/16 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
vue实现循环切换动画
2018/10/17 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
js实现查询商品案例
2020/07/22 Javascript
使用python实现strcmp函数功能示例
2014/03/25 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
Python内建数据结构详解
2016/02/03 Python
python之消除前缀重命名的方法
2018/10/21 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
2019史上最全Database工程师题库
2015/12/06 面试题
铭万公司.net面试题笔试题
2014/07/20 面试题
函授毕业生的自我鉴定
2013/11/26 职场文书
英文简历中的自荐信范文
2013/12/14 职场文书
xxx同志考察材料
2014/02/07 职场文书
房屋出租协议书
2014/04/10 职场文书