php rand()随机函数生成随生数代码

 更新时间:2016年11月25日 15:51  点击:1535

首先来认识一下php教程提供的随机数函数rand()。php的rand()函数将返回随机整数,具体使用方法如下

rand(min,max)

可选参数min和max可以使rand() 返回0到rand_max之间的伪随机整数。例如,想要5到15(包括 5 和 15)之间的随机数,用 rand(5, 15)。

下面我来看一个具体的示例,我们做一个基本的函数调用,不设置具体的参数,我们得到的随机数将不受min和max两个参数的限制。
复制代码 代码如下:

<? echo(rand());?>

得到的结果:652696728 (随机结果)1、使用php生成指定区间内的随机数如果我们要生成两个数字之间的随机数,我们需要为rand设定两个参数:这样,我们得到的结果就在我们的控制之中,他应该是minnum <= result <= maxnum;假设我们要使用php生成10000到2000之间的随机数,我们的代码应该这样写:
复制代码 代码如下:
echo(rand(1000,2000));?>

够简单吧,下面来点稍微有些难度的。在本文的开始我们说过,随机数的作用很大,我们可以用php随机数解决一些复杂的问题。2、使用php获得一个集合中的随机元素将设我们需要从一个数组中获得一个随机元素
复制代码 代码如下:

$my_array=array('asp教程','php','网页特效','ajax','css教程','jquery','html');
echo($my_array[rand(0,6)]);
?>

可以想象,我们得到的结果可能是asp、php或javascript等任何一个包含在数组中的元素。注意,我们的my_array数组包含七个元素,我们将rand()的参数设置为0到6之间。下面我们使用两组随机数对上面的示例做功能增强,我们需要一个随机数进行条件判断,另一个随机数做元素的输出。
复制代码 代码如下:

$my_array=array('asp','php','javascript','ajax','css','jquery','html');
$repetition=rand(0,6);
for($i=0;$i<=$repetition;$i++){
echo('i am learning ' . $my_array[rand(0,6)]);
echo(' on 51cto.com');
}
?>


我们得到的结果可能像下面这样:


第一次运行我们得到三条结果

由于我们使用一个随机数限定显示的条数,所以得到的结果除了文章随机,显示的条数也是随机的,如下图:


第二次运行得到七条结果

也许你会问,php随机数只能做这些无聊的事儿吗?rand( )看来并不是那么重要;你错了,想想随处可见的验证码、一些cms系统的随机文章提取、下载地址分配等,随机数在这些应用中发挥着重要作用;另外,在安全和算法领域,随机数的很多应用也值得我们去深入研究,比如加密和同余法结构

<?php
$ip2id= round(rand(600000, 2550000) / 10000); //第一种方法,直接生成
$ip3id= round(rand(600000, 2550000) / 10000);
$ip4id= round(rand(600000, 2550000) / 10000);
//下面是第二种方法,在以下数据中随机抽取
$arr_1 = array("218","218","66","66","218","218","60","60","202","204","66","66","66","59","61","60","222","221","66","59","60","60","66","218","218","62","63","64","66","66","122","211");
$randarr= mt_rand(0,count($arr_1)-1);
$ip1id = $arr_1[$randarr];
echo $ip1id;
echo ".";
echo $ip2id;
echo ".";
echo $ip3id;
echo ".";
echo $ip4id;
?>

原理简单,学过数据结构的一看就明白是什么道理了。不过今天在使用时数据中出现了子节点id(71)小于父节点id(104).导致部分子节点没被存储入数组
修改了一下

<?php教程
class tree
{
    var $data = array();
    var $child = array(-1=>array());
    var $layer = array(-1=>-1);
    var $parent = array();
    var $num = array();
 
    function setnode($id, $parent, $value,$num=0)
    {
        $parent = $parent ? $parent : 0;
 
        $this->data[$id]  = $value;
        $this->num[$id]      = $num;
        if (!isset($this->child[$id])) $this->child[$id] = array();
        $this->child[$parent][] = $id;
        $this->parent[$id]  = $parent;
 
        if (!isset($this->layer[$parent]) && $parent == 0)
        {
           $this->layer[$id] = 0;
        }
        else
        {
            $this->layer[$id] = $this->layer[$parent] + 1;
        }
    }
 
 
    function getlist(&$tree, $root= 0)
    {
        foreach ($this->child[$root] as $key=>$id)
        {
            $tree[] = $id;
            if($this->child[$id]) $this->getlist($tree, $id);
        }
    }
 
    function getvalue($id)
    {
  if($this->layer[$id]==0)
  {
   return $this->data[$id];
  }
  else
  {
   return $leftmar.$this->data[$id];
  }
    }
 
    function getnum($id)
    {
  return $this->num[$id];
    }
 
    function getbitvalue($id)
    {
  return $this->data[$id];
    }
 
    function getlayer($id, $space = false)
    {
        return $space ? str_repeat($space, $this->layer[$id]) : $this->layer[$id];
    }
 
    function getparent($id)
    {
        return $this->parent[$id];
    }
 
    function getparents($id)
    {
        while ($this->parent[$id] != -1)
        {
            $id = $parent[$this->layer[$id]] = $this->parent[$id];
        }
 
        ksort($parent);
        reset($parent);
 
        return $parent;
    }
 
    function getchild($id)
    {
        return $this->child[$id];
    }
 
    function getchilds($id = 0)
    {
        $child = array($id);
        $this->getlist($child, $id);
 
        return $child;
    }
 
    function printdata()
    {
        return $this->layer;
    }
}php树型菜单类
?>

php教程创建文件时存在文件自动重命名实现方法

<?php
function createfile($filename, $content = '')
{
    $fp = file_put_contents($filename, $content);
}
 
// 要创建的文件名称
$filename = 'www.txt';
 
if(file_exists($filename))
{
    // 打开当前目录
   $handle = opendir('./');
    $fileinfo = pathinfo($filename);
    //print_r($fileinfo);
    $files = array();
    while (false !== ($file = readdir($handle)))
    {
        if(preg_match_all("/{$fileinfo['filename']}(d*).{$fileinfo['extension']}/i", $file, $match))
        {
            $max = max($match[1]);
            if($max)
            {
                $createfile = $fileinfo['filename'] . ($max + 1) . '.' . $fileinfo['extension'];
            }
            else
            {
                $createfile = $fileinfo['filename'] . '1.' . $fileinfo['extension'];
            }
        }
    }
    createfile($createfile);
}
else
{
    createfile($filename);
}
?>

使用临时文件作记数器 方法二

<?php
function createfile($filename, $content = '')
{
    if(file_exists($filename . '.tmp'))
    {
        $num = (int) file_get_contents($filename . '.tmp') + 1;
        $fileinfo = pathinfo($filename);
        file_put_contents($fileinfo['filename'] . '(' . $num . ')' .$fileinfo['extension'], $content);
        file_put_contents($filename . '.tmp', $num);
    }
    else
    {
        file_put_contents($filename, $content);
        file_put_contents($filename . '.tmp', 1);
    }
}
createfile('test.txt');
?>

php教程 中文大写数字 转成 数字代码

echo "<pre>";
echo test('一十二亿七十一万五十一');
/*
create by piaofen
date: 2011-03-31
function: 中文大写数字转阿拉伯数字
*/
function chtonum($str='')
{
$unit = array('亿'=>100000000,'万'=>10000,'千'=>1000,'仟'=>1000,'百'=>100,'十'=>10);
$num = array('一'=>1,'二'=>2,'三'=>3,'四'=>4,'五'=>5,'六'=>6,'七'=>7,'八'=>8,'九'=>9);
$str = str_replace(array_keys($num),$num,$str);
$result = array();
$number = '';
preg_match_all('/[0-9]千[0-9]百[0-9]十[0-9]|[0-9]百[0-9]十[0-9]|[0-9]十[0-9]|[0-9]/ism',$str,$pnum);
foreach($pnum[0] as $val){
  $tmp = '';
  for($i=0;$i<mb_strlen($val,'utf-8');$i++){
   $s = mb_substr($val,$i,1,'utf-8');
   if(!is_numeric($s)){
    $k = $unit[$s];
    if(strlen($tmp)>=strlen($k)){
     preg_match('/([0-9]*)([0-9]{'.(strlen($k)-1).'})([0-9])/ism',$tmp,$n);
     $tmp = ($n[1]+$n[3]).$n[2];
    }else{
     $tmp = $tmp * $k;
    }
   }else if($i==(mb_strlen($val,'utf-8')-1)){
    $tmp += $s;
   }else{
    $tmp .= $s;
   }
  }
  $nnum[] = $tmp;
}
$result = str_replace(array_keys($unit),';',str_replace($pnum[0],$nnum,$str));
foreach(explode(';',$result) as $val){
  $number .= sprintf('%04d',$val);
}
return sprintf('%2u',$number);
}
 

php教程 pcre正则表达式完全教程
预定义常量

preg_pattern_order

结果按照”规则”排序, 仅用于preg_match_all, 即$matches[0]是完整规则的匹配结果, $matches[1]是第一个子组匹配的结果
preg_set_order:

结果按照”集合”排序, 仅用于preg_match_all, 即$matches[0]保存第一次匹配结果的所有结果(包含子组)信息, $matches[1]保存第二次的结果信息
preg_offset_capture

在捕获的结果中, 不仅包含结果子串, 还会包含子串在原字符串中的位置.
preg_split_no_empty

告知preg_split仅返回非空的部分
preg_split_delim_capture

告知preg_split同时捕获规则中的括号表达式匹配到的内容
preg_split_offset_capture

如果设置了这个标记, 每次匹配得到的结果的offset位置将会被同时返回.
preg_no_error

如果preg_last_error调用后返回此值, 则表明正则没有错误
preg_internal_error

如果preg_last_error调用后返回此值, 则表明发生了pcre内部错误
preg_backtrack_limit_error

如果回溯次数超过预设的值, preg_last_error函数返回此值
preg_recursion_limit_error

如果递归次数超过预设的值, preg_last_error函数返回此值
preg_bad_utf8_error

如果preg的最后错误是由于异常的utf-8数据(仅在运行在utf-8模式正则表达式情况下)导致的, 那么preg_last_error返回此值
 

preg_bad_utf8_offset_error

如果偏移量与合法的utf-8代码(仅在运行在utf-8模式正则表达式情况下)的开始点不匹配, preg_last_error的调用返回此值
pcre_version

返回pcre版本号和发布日期.

模式修饰符

i        pcre_classes
大小写不敏感的修饰符
m      pcre_multiline
多行匹配, 默认情况下, pcre认为目标字符串是一组单行字符组成的(然而实际上它可能会包含多行). 元字符^仅匹配字符串的开始位置, 而元字符$则仅匹配字符串的末尾, 或者新行之前(除非设置了d修饰符). 这个修饰符和perl中工作一直, 使用后, ^和$会匹配每一行的开始和结尾
如果目标字符串中没有n字符或者模式中没有出现^和$, 则设置此修饰符是没有任何影响的.
s       pcre_dotall
用来增强字符类.(点号)的功能, 默认情况下, 点号匹配任意字符, 但不包括换行符及以后内容. 使用此修饰符后, 可以匹配任意字符包括换行符
x       pcre_extended
如果设置了这个修饰符, 模式中的空白字符, 除非被转义或者在一个字符类中, 否则都被忽略. 在一个未转义的#之后直到下一个换行符之间的内容都会被正则表达式引擎忽略以方便添加注释.
e       preg_replace_eval
使用此修饰符后, preg_replace的$replacement参数除了可以使用正常的反向引用来取得匹配值, 还可以在其中书写eval语法允许的字符串进行求值, 并将返回结果用于最终的替换.
a       pcre_anchored
如果设置了此修饰符, 模式被强制成为”anchored”(锚点), 也就是说约束使其始终从字符串的嘴前面开始搜索. 这个影响也可以通过构造适当的规则来实现(perl中只能这样实现)
d      pcre_dollar_endonly
如果设置了这个修饰符, $会匹配目标字符串的结尾之前, 而如果没有设置这个修饰符, 如果目标字符串最后一个字符时换行符, $就会匹配该换行符之前而不是字符串结尾之前.
如果设置了m修饰符, 则这个修饰符会被忽略. 这一点和perl不一致
s
当一个模式需要多次使用的时候, 我们为了获得更高的匹配效率, 值得花费一些时间对其进行分析. 如果设置了这个修饰符, 将会进行这个额外的分析. 当前, 这种对一个模式的分析仅仅适用于非锚点的匹配(即没有一个单一固定的开始字符)
u      pcre_ungreedy
这个修饰符逆转了贪婪的模式, 如果没有这个设置, 默认情况下的正则匹配时贪婪的, 量词后增加了?的模式是非贪婪的, 但是如果设置了这个修饰符, 则刚好相反.
这个规则与perl是不兼容的.
也可以在模式中使用?u来达到同样的效果
x       pcre_extra
这个修饰符启用了一个pcre中与perl不兼容的额外功能. 任意反斜线后面跟一个没有特殊含义的字符会导致一个错误, 以此来保留这些组合以备后期扩展.
默认情况下, 和perl一样, 反斜线后跟一个没有特殊含义的字符会以该字符原意解释.
当前没有任何其他特性受此修饰符控制
j        pcre_info_jchanged
与内部选项?j相同, 用来改变本地pcre_dupnames选项. 允许子组有重复的名字
u       pcre8
这个修饰符打开一个pcre中与perl不兼容的额外功能. 模式字符串被认为是utf-8的.

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07
  • php中的foreach函数的2种用法

    Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
  • 超简洁java实现双色球若干注随机号码生成(实例代码)

    这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
  • php二维码生成

    本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • PHP函数strip_tags的一个bug浅析

    PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数...2014-05-31
  • C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • PHP加密解密函数详解

    分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30