php - 生成具有预定义长度的随机数 PHP

标签 php random numbers

我正在尝试使用 mt_rand() 创建一个函数以生成真正的随机数,因为 rand() 还不够。

问题是我需要预先定义数字的长度,比如说我需要一个 10 位的随机数。

无论如何,我一直在胡闹,这就是我想出的:

    function randomNumber($length) {
        $min = str_repeat(0, $length-1) . 1;
        $max = str_repeat(9, $length);
        return mt_rand($min, $max);   
    }

理论上应该可行(据我所知),但事实并非如此。长度是完全随机的,它也会抛出负值。

有什么想法吗?

最佳答案

除非您拥有那些量子静态的东西之一,否则您无法获得真正的随机数。然而,在基于 Unix 的操作系统上,/dev/urandom 用于“更多随机性”,如果您确实需要的话。

无论如何,如果您想要一个 n 位数字,那正是您应该得到的:n 个单独的数字。

function randomNumber($length) {
    $result = '';

    for($i = 0; $i < $length; $i++) {
        $result .= mt_rand(0, 9);
    }

    return $result;
}

您现有代码无法正常工作的原因是 0000...01 仍然是 1mt_rand,而且 mt_rand 的范围不是无限的。负数是整数溢出。

关于php - 生成具有预定义长度的随机数 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13169025/

相关文章:

php - 如何从mysql中的一个以外的值开始自动增加列值?

excel - 用Excel随机生成x个整数与y的和

algorithm - 随机选择具有频率的项目的高效算法

php - 检查函数参数是否设置

java - <f :convertNumber> use the right number separator when using patterns to format currency?

c++ - 将数字转换为单词

c - 如何合并两个数字并将其存储在另一个数字中,并且点位于它们之间

php - Laravel - 很多用于使用 Blade 渲染 View 的访问器(Mutators)

php - Li3 - 正确处理 MySQL 5.7 生成的列

php - 解决这个问题的正则表达式是什么?