基于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中使用Oracle数据库(5)
Oct 09 PHP
用缓存实现静态页面的测试
Dec 06 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
Jul 20 PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 PHP
PHP引用(&amp;)各种使用方法实例详解
Mar 20 PHP
php的sso单点登录实现方法
Jan 08 PHP
php生成图片验证码-附五种验证码
Aug 19 PHP
PHP随机数 C扩展随机数
May 04 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
laravel框架邮箱认证实现方法详解
Nov 22 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 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和AJAX创建RSS聚合器的代码
2007/03/13 PHP
PHP 七大优势分析
2009/06/23 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
自动更新作用
2006/10/08 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
jquery移动节点实例
2015/01/14 Javascript
jQuery 选择器详解
2015/01/19 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
vue + element-ui的分页问题实现
2018/12/17 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
python实现堆栈与队列的方法
2015/01/15 Python
Python导入oracle数据的方法
2015/07/10 Python
浅谈python中截取字符函数strip,lstrip,rstrip
2015/07/17 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Python3调用微信企业号API发送文本消息代码示例
2017/11/10 Python
python实现微信每日一句自动发送给喜欢的人
2019/04/29 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
意大利和国际奢侈品牌购物网站:Suitnegozi.com
2021/01/15 全球购物
2014年三八妇女节活动方案
2014/02/28 职场文书
五一口号
2014/06/19 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
原告离婚代理词
2015/05/23 职场文书
怒海潜将观后感
2015/06/11 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis