zoukankan      html  css  js  c++  java
  • PHP随机生成不重复的8位卡号(数字)和卡密(字符串)

    一、生成不重复的随机数字,可自定义长度(最多支持10位数

     1 /**
     2  * 生成不重复的随机数字(不能超过10位数,否则while循环陷入死循环)
     3  * @param  int $start 需要生成的数字开始范围
     4  * @param  int $end 结束范围
     5  * @param  int $length 需要生成的随机数个数
     6  * @return number      生成的随机数
     7  */
     8 function getRandNumber($start = 0, $end = 9, $length = 8)
     9 {
    10     //初始化变量为0
    11     $count = 0;
    12     //建一个新数组
    13     $temp = array();
    14     while ($count < $length) {
    15         //在一定范围内随机生成一个数放入数组中
    16         $temp[] = mt_rand($start, $end);
    17         //$data = array_unique($temp);
    18         //去除数组中的重复值用了“翻翻法”,就是用array_flip()把数组的key和value交换两次。这种做法比用 array_unique() 快得多。
    19         $data = array_flip(array_flip($temp));
    20         //将数组的数量存入变量count中
    21         $count = count($data);
    22     }
    23     //为数组赋予新的键名
    24     shuffle($data);
    25     //数组转字符串
    26     $str = implode(",", $data);
    27     //替换掉逗号
    28     $number = str_replace(',', '', $str);
    29     return $number;
    30 }
    31 
    32 echo getRandNumber(0, 9, 8)."<br/>";

    二、随机生成不重复的8位卡密

     1 //随机生成不重复的8位卡密
     2 function makeCardPassword()
     3 {
     4     $code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
     5     $rand = $code[rand(0, 25)]
     6         . strtoupper(dechex(date('m')))
     7         . date('d') . substr(time(), -5)
     8         . substr(microtime(), 2, 5)
     9         . sprintf('%02d', rand(0, 99));
    10     for (
    11         $a = md5($rand, true),
    12         $s = '0123456789ABCDEFGHIJKLMNOPQRSTUV',
    13         $d = '',
    14         $f = 0;
    15         $f < 8;
    16         $g = ord($a[$f]),
    17         $d .= $s[($g ^ ord($a[$f + 8])) - $g & 0x1F],
    18         $f++
    19     ) ;
    20     return $d;
    21 }
    22 
    23 echo makeCardPassword();

    链接:https://www.php.cn/php-weizijiaocheng-437582.html(文章有坑,生成不重复的随机数字,可自定义长度没有提示最多只支持10数

  • 相关阅读:
    0513装饰器
    python05-09
    python第四讲
    第四讲作业
    Python第二天
    课后实践之嵌入式基础20155314
    20155314 《信息安全系统设计基础》课程总结
    2017-2018-1 20155314 《信息安全系统设计基础》第14周学习总结
    2017-2018-1 20155314《信息安全系统设计基础》实验五 通讯协议设计
    2017-2018-1 20155314 《信息安全系统设计基础》第13周学习总结
  • 原文地址:https://www.cnblogs.com/clubs/p/12009769.html
Copyright © 2011-2022 走看看