PHP 生成一个预先定义长度的随机数

2024-03-04

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

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

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

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

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

有任何想法吗?


如果“真正的随机数”是指加密安全的随机数,请确保使用random_int https://www.php.net/manual/en/function.random-int.php代替mt_rand. mt_rand不基于 CSPRNG。如果您不知道是否需要 CSPRNG,请使用random_int anyway– 这并不慢。

如果您想要一个 n 位数字字符串,这正是您应该得到的:n 个单独的数字。

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

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

    return $result;
}

您现有的代码不起作用的原因是0000...01还是1 to mt_rand,还有那个mt_rand的范围不是无限的。负数是整数溢出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 生成一个预先定义长度的随机数 的相关文章

随机推荐

  • 动态更新 Cors 注册表

    我在 heroku 上有一个应用程序 它返回一些 oauth 令牌 在我的 Spring Boot 应用程序中 我使用了 WebMvcConfigurerAdapter 从数据库获取来源列表 return new WebMvcConfigu
  • 为什么 Oracle SQL 不允许我们在 GROUP BY 子句中使用列别名?

    这是我在编写 SQL 查询时经常遇到的情况 我认为在 GROUP BY 表达式中编写整个列 例如长 case 表达式 具有长参数的求和函数 而不是别名会使查询更长且可读性较差 为什么 Oracle SQL 不允许我们在 GROUP BY 子
  • 是否可以使用“initialData”属性将 App 脚本参数写入 Stackdriver 消息?

    Summary Google 建议可以使用具有 initialData 属性的 JSON 对象将 App 脚本参数 以及其他数据 写入 Stackdriver 但这似乎不起作用 问题示例 这个谷歌页面 https developers go
  • MS Access 日期/时间的最大值

    Microsoft Access 中可以表示的最大 最新 日期是哪一天 Valid date values range from 657 434 January 1 100 A D to 2 958 465 December 31 9999
  • LINQ to SQL - 选择字符串数组等文本

    我有一个清单
  • 取消特定的 UILocalNotification

    我有这个用于本地通知的代码 并且我有一个使用我自己的方法的 ScheduleNotification 和clearNotification 这些是代码 void clearNotification UIApplication sharedA
  • 在 ASP.NET 中创建动态控件

    我正在创建一个文件上传控件linKbutton单击事件 第一次它创建控件 但如果我第二次按链接按钮 它就不会创建 这有什么问题吗 以下是我的代码 protected void LinkButton1 Click object sender
  • common lisp:宏如何使用以编程方式生成的名称定义其他方法/宏?

    我意识到我的代码的某个部分由看起来相似的方法组组成 就像我有多个三重奏 一个由程序员的其他两个函数调用的辅助函数 我正在尝试编写一个宏来为我定义这三个函数 以便我所需要做的就是调用该宏 但我的尝试导致 defun 和函数调用将引用字符串而不
  • 如何查看 PyCharm 中每个键的作用?

    我正在 emacs 中寻找类似 M x描述键 的东西 I see Help gt Default Keymap Reference and Settings gt Keymap但这两者都是按主题分组和排序的 我想要一些按键分组和排序的东西
  • MVC4 中的 Bootstrap 和 font-awesome

    我正在使用 MVC4 并通过 nuget 添加了 Bootstrap 和 Font Awesome 我可以看到 Bootstrap 如何通过 via 进行捆绑BootstrapBundleConfig cs 由 nuget 包添加 如下 p
  • 由于语法错误,我无法在 Haskell 上执行任何操作

    我可以执行简单的操作 例如 Hugs gt 2 2 例如 或任何操作 就此而言 但是当涉及到实际尝试定义一个函数时 例如 occurs Eq a gt a gt a gt Bool occurs x l x elem l 然后我收到消息 E
  • 在 PHP 中查找图像边框颜色的算法

    我正在尝试找到一种使用图像从图像中获取边框颜色的方法php 我尝试使用此代码 但此算法为我提供了任何图像中的所有颜色
  • 删除包含文件的文件夹

    我想发送文件file txt从我的 Rails 控制器使用send file 然后删除包含它的文件夹 send file Rails root public folder file txt system rm rf Rails root p
  • Android 应用内结算。何时取消注册 ResponseHandler?

    我们一年前实现了应用内结算 按照文档中的示例代码没有出现任何问题 几周前 我们注意到用户抱怨没有收到他们的物品 在调试代码时我们发现下面这句话才是问题的根源 Called when this activity is no longer vi
  • 在 Visual Studio Code 中隐藏 .js.map 文件:文件嵌套

    我正在 Visual Studio 代码中开发一个打字稿项目 并且想隐藏 js map 甚至可能是 js 文件不会出现在文件资源管理器中 是否可以只显示 ts文件资源管理器中的文件 在您的设置 用户或工作区 中 有一个设置可以调整以隐藏您想
  • 枚举智能感知显示属性?

    我想做这个 enum Foo Display Item One ItemOne 这样智能感知就会像在属性中一样显示它而不是实际名称 我知道这是可能的 我以前见过 那么你可以提供 XML 文档 enum Foo
  • 将条形图和折线图与 pandas 结合起来[重复]

    这个问题在这里已经有答案了 我正在尝试将条形图和折线图结合起来 但我似乎无法弄清楚 我尝试了代码here https stackoverflow com questions 23482201 plot pandas dataframe as
  • 关闭父级而不关闭子级

    我有一个项目 其中弹出一个设置对话框 父级 当用户点击 继续 时 将打开一个主对话框 子级 在主对话框中 用户可以重新编辑设置对话框 父级 当用户单击 X 关闭设置对话框时 应用程序终止 我认为这是因为我们关闭了父级并处理了它的所有子级 是
  • 重新定义 Mathematica 中的非交换乘法

    Mathematicas NonCommutativeMultiply 不会简化诸如 a 0 0 a 0 a 1 1 a a or a a a 2 我想重新定义 去做这个 我使用 NCAlgebra 来执行此操作 但我需要 ReplaceR
  • PHP 生成一个预先定义长度的随机数

    我正在尝试使用 mt rand 创建一个函数来生成真正的随机数 因为 rand 还不够 问题是我需要预先定义数字的长度 假设我需要一个 10 位随机数 无论如何 我一直在搞乱 这就是我想出的 function randomNumber le