PHP生成随机数汇总

PHP生成32位随机数

function genToken( $len = 32, $md5 = true ) {
          mt_srand( (double)microtime()*1000000 );

          $chars = array(
              'Q', '@', '8', 'y', '%', '^', '5', 'Z', '(', 'G', '_', 'O', '`',
              'S', '-', 'N', '<', 'D', '{', '}', '[', ']', 'h', ';', 'W', '.',
              '/', '|', ':', '1', 'E', 'L', '4', '&', '6', '7', '#', '9', 'a',
              'A', 'b', 'B', '~', 'C', 'd', '>', 'e', '2', 'f', 'P', 'g', ')',
              '?', 'H', 'i', 'X', 'U', 'J', 'k', 'r', 'l', '3', 't', 'M', 'n',
              '=', 'o', '+', 'p', 'F', 'q', '!', 'K', 'R', 's', 'c', 'm', 'T',
              'v', 'j', 'u', 'V', 'w', ',', 'x', 'I', '$', 'Y', 'z', '*'
          );

          $numChars = count($chars) - 1; $token = '';

          for ( $i=0; $i<$len; $i++ )
              $token .= $chars[ mt_rand(0, $numChars) ];

          if ( $md5 ) {
              $chunks = ceil( strlen($token) / 32 ); $md5token = '';
              for ( $i=1; $i<=$chunks; $i++ )
                  $md5token .= md5( substr($token, $i * 32 - 32, 32) );
              $token = substr($md5token, 0, $len);
          } return $token;

      }

echo genToken();

php生成指定长度的随机数

  function get_random($len=3){  
  //range 是将10到99列成一个数组   
  $numbers = range (10,99);  
  //shuffle 将数组顺序随即打乱   
  shuffle ($numbers);   
  //取值起始位置随机  
  $start = mt_rand(1,10);  
  //取从指定定位置开始的若干数  
  $result = array_slice($numbers,$start,$len);   
  $random = "";  
  for ($i=0;$i<$len;$i++){   
     $random = $random.$result[$i];  
   }   
   return $random;  
 }  
  
//随机数  
function get_random2($length = 4) {  
    $min = pow(10 , ($length - 1));  
    $max = pow(10, $length) - 1;  
    return mt_rand($min, $max);  
}  
  
echo "<br/>";  
echo get_random(3);  
echo "<br/>";  
echo get_random2(6);  

php生成随机密码

1、在 33 – 126 中生成一个随机整数,如 35,
2、将 35 转换成对应的ASCII码字符 #
3、重复以上 1、2 步骤 n 次,连接成 n 位的密码

function create_password($pw_length = 8)
{
$randpwd = '';
for ($i = 0; $i < $pw_length; $i++)
{
$randpwd .= chr(mt_rand(33, 126));
}
return $randpwd;
}
// 调用该函数,传递长度参数$pw_length = 6
echo create_password(6);

1、预置一个的字符串 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符
2、在 $chars 字符串中随机取一个字符
3、重复第二步 n 次,可得长度为 n 的密码

function generate_password( $length = 8 ) {
// 密码字符集,可任意添加你需要的字符
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|';
$password = '';
for ( $i = 0; $i < $length; $i++ )
{
// 这里提供两种字符获取方式
// 第一种是使用 substr 截取$chars中的任意一位字符;
// 第二种是取字符数组 $chars 的任意元素
// $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
$password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
}
return $password;
}

echo generate_password();

php获取四位字母和数字的随机数

function GetfourStr($len) 
{ 
  $chars_array = array( 
    "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
    "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", 
    "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", 
    "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", 
    "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", 
    "S", "T", "U", "V", "W", "X", "Y", "Z", 
  ); 
  $charsLen = count($chars_array) - 1; 
 
  $outputstr = ""; 
  for ($i=0; $i<$len; $i++) 
  { 
    $outputstr .= $chars_array[mt_rand(0, $charsLen)]; 
  } 
  return $outputstr; 
} 
echo GetfourStr(4);

用php成n个随机数,要求n个数的和等于自定义数值

$rand_array = array();
function  get_rand_n($rand_array) {
    $num = 200;//数字自定义
    $rand_number = mt_rand(1,10);//范围自定义
    if(empty($rand_array)) {
        $rand_array[] = $rand_number;
        return get_rand_n($rand_array);
    } else {
        $count = 0;
        foreach($rand_array as $item) {
            $count += $item;
        }
        if($count < $num) {
            if($count+$rand_number == $num) {
                $rand_array[] = $rand_number;
                return $rand_array;
            } else if($count+$rand_number < $num) {
                $rand_array[] = $rand_number;
                return get_rand_n($rand_array); // 回掉再次计算
            } else { // 如果得到的值大于了100
                return get_rand_n($rand_array); // 重新获得随机数,知道为100的时候返回这个随机数数组
            }
        }
    }
}
$rand_array = get_rand_n($rand_array);
var_dump($rand_array);
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lyatf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值