代码之家  ›  专栏  ›  技术社区  ›  Val

使用PHP的[min-max]范围内的随机数

  •  77
  • Val  · 技术社区  · 14 年前

    有没有办法根据最小值和最大值生成一个随机数?

    例如,如果min是1,max是20,那么它应该生成1到20之间的任意数字,包括1到20?

    7 回复  |  直到 7 年前
        1
  •  134
  •   Prisoner    14 年前
    <?php
      $min=1;
      $max=20;
      echo rand($min,$max);
    ?>
    
        2
  •  29
  •   Salvador Dali    9 年前

    新的 PHP7 终于有人支持 cryptographically secure pseudo-random integers.

    int random_int ( int $min , int $max )
    

    random“int”生成加密安全的伪随机整数

    这基本上使以前的答案过时了。

        3
  •  17
  •   Matt Cromwell    9 年前

    一个 更快 更快的版本将使用mt_rand:

    $min=1;
    $max=20;
    echo mt_rand($min,$max);
    

    资料来源: http://www.php.net/manual/en/function.mt-rand.php .

    注: 您的服务器需要启用Math PHP模块才能正常工作。如果没有,请在主机上设置bug以启用它,或者必须使用普通(和较慢的)rand()。

        4
  •  5
  •   pinkfloydx33    14 年前
    (rand() % ($max-$min)) + $min
    

    rand ( $min , $max )
    

    http://php.net/manual/en/function.rand.php

        5
  •  4
  •   winwaed    14 年前
    rand(1,20)
    

    PHP的rand函数的文档如下:

    http://php.net/manual/en/function.rand.php

    使用 srand() 函数设置随机数生成器的种子值。

        6
  •  4
  •   vonUbisch    8 年前

    我把答案打包在这里,使它独立于版本;

    function generateRandom($min = 1, $max = 20) {
        if (function_exists('random_int')):
            return random_int($min, $max); // more secure
        elseif (function_exists('mt_rand')):
            return mt_rand($min, $max); // faster
        endif;
        return rand($min, $max); // old
    }
    
        7
  •  0
  •   asi_x    9 年前

    试试这个。它将根据您的愿望生成id。

    function id()
    {
     // add limit
    $id_length = 20;
    
    // add any character / digit
    $alfa = "abcdefghijklmnopqrstuvwxyz1234567890";
    $token = "";
    for($i = 1; $i < $id_length; $i ++) {
    
      // generate randomly within given character/digits
      @$token .= $alfa[rand(1, strlen($alfa))];
    
    }    
    return $token;
    }