美文网首页
随机函数及应用

随机函数及应用

作者: 千寻未雪 | 来源:发表于2019-12-25 16:40 被阅读0次

    随机函数及应用

    1. rand 产生一个随机整数

      echo rand(1, 100); // 生成一个 1-100 之间的随机数
      
    2. uniqid 生成一个唯一ID

      echo uniqid();
      echo uniqid('prefix', true);
      echo uniqid('', true);
      
      /*
      string uniqid ( [ string $prefix = "" [, bool $more_entropy = false ]] )
      获取一个带前缀、基于当前时间微秒数的唯一ID。
      
      $more_entropy 设置为true 会提高唯一性。
      prefix为空,则返回的字符串长度为13。more_entropy 为 TRUE,则返回的字符串长度为23。
      */
      
    3. 概率计算

      // 计算10%的概率
      if( rand(1,100) <= 10 ) echo "10%";
      
      // 计算任意概率
      $rate = 0.123; // 0-1之间的小数
      $max = pow(10, strlen($rate)-2);
      
      if( rand(1, $max) <= $rate*$max ) {
          echo $rate;
      }
      
    4. 生成一个由数字字母组成,指定长度的字符串

      $len = 10;
      $str = '';
      for($i = 0; $i < $len; $i++) {
          $str .= rand(0, 35) < 10 ? chr(rand(48, 57)) : chr(rand(65, 90));
      }
      echo $str;
      
      // chr 将一个ASCII码转换为字符串,ASCII 48-57 对应0-9,65-90对应大写A-Z
      
    5. 生成一个唯一字符串ID,带服务器IP和用户IP信息

      function createUniqid() {
          $serverIp = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : '127.0.0.1'; // 获取服务器IP
          $userIp = isset($_SERVER['REMOAT_ADDR']) ? $_SERVER['REMOAT_ADDR'] : '127.0.0.1'; // 获取用户端IP
          // 将IP转换为字符串
          $serverIp = base_convert(ip2long($serverIp), 10, 36);
          $userIp = base_convert(ip2long($userIp), 10, 36);
          // 生成一个 uniqid,去掉里面的'.',然后用进制转换为字符串
          $uniqid = uniqid('', true);
          $uniqid = base_convert(str_replace('.', '', $uniqid), 16, 36);
      
          return $serverIp.'-'.$userIp.'-'.$uniqid;
      }
      echo createUniqid();
      

    相关文章

      网友评论

          本文标题:随机函数及应用

          本文链接:https://www.haomeiwen.com/subject/lqgcoctx.html