基于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 文章中的远程图片采集到本地的代码
Jul 30 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
为你总结一些php系统类函数
Oct 21 PHP
抛弃 PHP 代价太高
Apr 26 PHP
php封装的图片(缩略图)处理类完整实例
Oct 19 PHP
php实现PDO中捕获SQL语句错误的方法
Feb 16 PHP
PHP区块查询实现方法分析
May 12 PHP
laravel邮件发送的实现代码示例
Jan 31 PHP
thinkphp5框架路由原理与用法详解
Feb 11 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
Apr 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
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
谈谈 PHP7新增功能
2015/12/16 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
微信小程序 如何保持登录状态
2019/08/16 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
用实例说明python的*args和**kwargs用法
2013/11/01 Python
使用python分析git log日志示例
2014/02/27 Python
跟老齐学Python之编写类之二方法
2014/10/11 Python
python中list循环语句用法实例
2014/11/10 Python
python的re正则表达式实例代码
2018/01/24 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
python类中super() 的使用解析
2019/12/19 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
什么是Assembly(程序集)
2014/09/14 面试题
小学生读书活动总结
2014/06/30 职场文书
2015年度物流工作总结
2015/04/30 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
mysql insert 存在即不插入语法说明
2022/03/25 MySQL
关于Python使用turtle库画任意图的问题
2022/04/01 Python
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python