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

Val*_*Val 78 php security random

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

例如,如果min为1且最大值为20,则应生成1到20之间的任何数字,包括1和20?

Pri*_*ner 132

<?php
  $min=1;
  $max=20;
  echo rand($min,$max);
?>
Run Code Online (Sandbox Code Playgroud)


Sal*_*ali 29

在新的PHP7中,最终支持加密安全的伪随机整数.

int random_int ( int $min , int $max )
Run Code Online (Sandbox Code Playgroud)

random_int - 生成加密安全的伪随机整数

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

  • 那很棒!但是,直到webhosts在全球范围内支持PHP7,这对于构建产品以供分发的任何人都不会有用.因此,之前对PHP7起作用的答案仍然是最佳实践. (2认同)

Mat*_*ell 17

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

$min=1;
$max=20;
echo mt_rand($min,$max);
Run Code Online (Sandbox Code Playgroud)

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

注意:您的服务器需要启用Math PHP模块才能使其正常工作.如果没有,请让您的主机启用它,或者您必须使用正常(和较慢)的rand().

  • 你的意思更快吧?不同的是(输入==更快更快= =性能明智) (6认同)

von*_*sch 6

我在这里捆绑了答案并使其独立于版本;

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
}
Run Code Online (Sandbox Code Playgroud)


win*_*aed 5

rand(1,20)
Run Code Online (Sandbox Code Playgroud)

PHP rand 函数的文档在这里:

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

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