php生成随机数的三种方法

5年以前  |  阅读数:648 次  |  编程语言:PHP 

如何用php生成1-10之间的不重复随机数?

例1,使用shuffle函数生成随机数。


    <?php
    $arr=range(1,10);
    shuffle($arr);
    foreach($arr as $values)
    {
     echo $values." ";
    }
    ?>

例2,使用array_unique函数生成随机数。


    <?php
    $arr=array();
    while(count($arr)<10)
    {
     $arr[]=rand(1,10);
     $arr=array_unique($arr);
    }
    echo implode(" ",$arr);
    ?>

例3,使用array_flip函数生成随机数,可以去掉重复值。


    <?php
    $arr=array();
    $count1=0;
    $count = 0;
    $return = array();
    while ($count < 10) 
     {
     $return[] = mt_rand(1, 10);
     $return = array_flip(array_flip($return));
     $count = count($return);
     } //www.jb51.net
    foreach($return as $value)
     {
     echo $value." ";
     }
    echo "<br/>";
    $arr=array_values($return);// 获得数组的值 
    foreach($arr as $key)
    echo $key." ";
    ?>

php随机数生成函数示例


    <?php
    function randpw($len=8,$format='ALL'){
    $is_abc = $is_numer = 0;
    $password = $tmp =''; 
    switch($format){
    case 'ALL':
    $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    break;
    case 'CHAR':
    $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
    break;
    case 'NUMBER':
    $chars='0123456789';
    break;
    default :
    $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    break;
    } // www.jb51.net
    mt_srand((double)microtime()*1000000*getmypid());
    while(strlen($password)<$len){
    $tmp =substr($chars,(mt_rand()%strlen($chars)),1);
    if(($is_numer <> 1 && is_numeric($tmp) && $tmp > 0 )|| $format == 'CHAR'){
    $is_numer = 1;
    }
    if(($is_abc <> 1 && preg_match('/[a-zA-Z]/',$tmp)) || $format == 'NUMBER'){
    $is_abc = 1;
    }
    $password.= $tmp;
    }
    if($is_numer <> 1 || $is_abc <> 1 || empty($password) ){
    $password = randpw($len,$format);
    }
    return $password;
    }
    for($i = 0 ; $i < 10; $i++){
    echo randpw(8,'NUMBER');
    echo "<br>";
    }

PS:最后再为大家提供两款相关在线工具供大家参考使用:

在线随机数字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu

高强度随机密码生成器:
http://tools.jb51.net/password/CreateStrongPassword

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例