PHP 中的随机 ID/数字生成器

2024-01-02

我正在我的数据库中构建一个“代理 ID”列表,满足以下要求:

  1. ID 长度必须为 9 位(仅限数字)
  2. ID 中的相同数字不得超过 3 个。
  3. ID 不能包含超过 2 个连续的相同数字(即 887766551;不能有 888..)

到目前为止,我已经完成了第 1 部分,但在上面的第 2 部分和第 3 部分中遇到了困难。我的代码如下。

function createRandomAGTNO() {
    srand ((double) microtime( )*1000000);
    $random_agtno = rand(100000000,900000000);
    return $random_agtno;
}

// Usage
$NEWAGTNO = createRandomAGTNO();

有任何想法吗?


  1. Do not除非您想彻底破坏随机数的安全性,否则每次调用都会重新设置 RNG 种子。
  2. 除非您的 PHP 非常旧,否则您可能根本不需要重新播种 RNG,因为 PHP 在启动时为您播种,并且极少数情况下您需要用您自己选择的种子替换种子。
  3. 如果您可以使用,请使用mt_rand代替rand。我的例子将使用mt_rand.

至于其余的 - 你可能会想出一个非常巧妙的将数字从线性范围映射到你想要的形式的数字,但让我们用暴力来代替。这是其中之一,是的,运行时间的理论上上限是无限的,但是expected运行时间是有限的并且相当小,所以不必太担心。

function createRandomAGTNO() {
  do {
    $agt_no = mt_rand(100000000,900000000);
    $valid = true;
    if (preg_match('/(\d)\1\1/', $agt_no))
      $valid = false; // Same digit three times consecutively
    elseif (preg_match('/(\d).*?\1.*?\1.*?\1/', $agt_no))
      $valid = false; // Same digit four times in string
  } while ($valid === false);
  return $agt_no;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 中的随机 ID/数字生成器 的相关文章

  • 提交ajax表单并停留在同一页面不起作用

    我想将用户的评论存储在我的数据库中 当用户提交时 我不想将他们重定向到新页面 我有以下代码 但它不起作用 我的 HTML 代码
  • 返回变量在 PHP 中不起作用(即没有返回值!)

    我更喜欢使用 Python 语言进行编程 但必须使用 PHP 来处理特定的网站应用程序项目 在 PHP 中 我试图将函数中的值 返回 到主程序环境 用于后续计算 但无论我尝试什么 函数中计算的值都不会返回该值 而是从函数中回显 工作正常 在
  • PHP/MySQL:检索邻接列表模型中的单个路径

    有没有什么有效的方法可以在不限制深度的情况下根据节点的ID检索邻接列表模型中的单个路径 就像如果我有一个名为 Banana 的节点的 ID 我可以获得以下路径 Food gt Fruits gt Banana 如果不可能的话也不是什么大问题
  • mongodb对话系统

    我正在实施一个verymongodb 上的简单对话系统 这个想法应该是 当我打开一个 convo 时 它应该显示发送和接收的消息 到目前为止一切正常 并且应该非常容易 通过使用像这样的伪代码这样的简单查询 from my id AND to
  • 如何随机打乱一个比 PRNG 周期更多排列的列表?

    我有一个包含大约 3900 个元素的列表 我需要对其进行随机排列以产生统计分布 我环顾四周 发现了这个使用 Python random shuffle 进行随机播放的列表的最大长度 https stackoverflow com quest
  • php 在内容前插入十六进制字符数

    我正在将网站移动到新服务器 旧服务器有 php 5 3 2 新服务器有 php 5 5 9 Centos httpd Apache 2 2 26 我已经复制了文件 它工作正常 除了唯一奇怪的事情 一些奇怪的十六进制数字被插入到页面内容之前
  • symfony 2 形式的函数 getName 做什么

    这是我的表格类 class CommentType extends AbstractType public function buildForm FormBuilder builder array options builder gt ad
  • 这些加密算法有什么区别?

    两者有什么区别MCRYPT RIJNDAEL 128 MCRYPT RIJNDAEL 256 MCRYPT BLOWFISH等等 哪一种最适合网络数据传输 Rijandel 是 AES 的另一个名称 AES 是当前的 一个好的标准 算法 数
  • xdebug_start_trace 行为异常

    我正在尝试进一步减少脚本内存使用量 我试图让我的脚本使用 xdebug 生成输出来分析内存使用情况 这是一个基于 CLI 的脚本 有 shebang usr local bin php q 我向它传递一个参数并检查它 argc gt 1 i
  • 如何从字符串中只获取数字? [复制]

    这个问题在这里已经有答案了 我有这样的字符串 第 001 课 完成 在这种情况下 我只想获取数字部分001 我试过这个 str the title preg match all d str matches number implode ma
  • WooCommerce:用文本覆盖购物车价格

    我们有很多产品具有以下功能 No price 零价格 我们让它们可以通过内置挂钩购买 但购物车仍然将它们显示为具有0 price结账时 我们希望购物车和结帐摘要显示 特殊订单 或任何其他文本 但 WooCommerce 似乎使基于文本的价格
  • PHP header() 和 jquery mobile

    我想使用 php header Location newpage php 进行重定向 我没有收到错误 但 Jquery mobile 似乎无法加载目标页面 并且地址栏仍保留旧地址 请问您有什么建议吗 Thanks 尝试添加data ajax
  • 使用 PDO 在 SQLite 中检索单个(且唯一)行的最简单方法

    我有这个 PDO stmt db gt prepare SELECT FROM channels WHERE id id stmt gt bindValue id id SQLITE3 INTEGER result stmt gt exec
  • 登录后所有页面都应该是https吗?

    这有点难以解释 但我会尽力 有一个网站 每个页面上都有登录表单 其中包含用户名 密码字段 这些页面未使用 SSL 用户填写用户名 密码并提交表单后 表单将被发送到 https 的身份验证页面 对于这种情况我有几个疑问 向 https 页面提
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 如何覆盖 phpunit 中导出的变量?

    我知道我可以设置环境变量 https phpunit de manual current en appendixes configuration html在我的 phpunit xml 里面
  • ZF2 工厂获取参数

    我有一个动态类别导航 在导航工厂中 我想从路线获取参数 我怎样才能做到这一点 在我看来 在我的 module php 中 public function getServiceConfig return array factories gt
  • WordPress 事件按元生效日期排序

    我在获取参数数组以按 Wordpress 中的日期对事件列表进行排序时遇到一些问题 我在 Stack Overflow 和其他地方找到了几个建议的解决方案 但经过大量的试验和错误后 这些解决方案似乎都不起作用 这没什么花哨的 而且应该比这容
  • sqlsrv_num_rows 不返回任何值

    我正在尝试获取查询中返回的行数 while 循环遍历结果有效 但由于某种原因 sqlsrv num rows 不返回任何值 result SELECT from dtable WHERE id2 apple query sqlsrv que
  • Laravel 5 注销特定用户

    在我的 laravel 5 应用程序中 有一个功能允许具有管理员角色的用户重置非管理员的任何人的密码 但这不会强制该人注销并再次登录 更改密码后如何强制用户注销 我没有对用于验证用户身份或任何内容的中间件进行任何更改 我不知道它是否有效 但

随机推荐

  • Delphi XE3 及更高版本在退出时不保存打开的 IDE 选项卡

    我正在运行 win 7 64Bit Delphi XE3 当我在旧的 Delphi XE 中打开一个项目时 它会打开我上次保存该项目时打开的所有表单 如何让XE3有同样的动作 显然是一个简单的问题 但我找不到XE3中保存布局的设置 你必须将
  • .NET API 的 PayPal 异常:流不可读

    正在尝试处理付款 但我的客户遇到了例外情况 当我逐步执行付款流程时 当我尝试使用 OAuthTokenCredential 方法获取访问令牌时 我看到此异常 HttpConnection 执行中出现异常 流不可读 这在几天前才起作用 我确实
  • 警告:格式“%d”需要“int”类型的参数,但参数 2 的类型为“long int”[-Wformat=]

    这段代码是关于 比赛条件 调度和编译器行为在进程或线程同步中起着重要作用 演示同步需求的最简单场景来自尝试修改共享变量值的两个线程 进程之间创建的竞争条件 这通常会导致数据不一致和错误结果 下面的例子演示了这种情况 我是 C 语言新手 对这
  • 为什么读取镶木地板数据集需要比数据集大小更多的内存?

    我正在尝试使用 pyarrow 从 Python 中的 S3 读取镶木地板数据集 S3 UI 显示该路径的大小为 14 3 GB 总共 836 个对象 我在具有 64GB RAM 的 c4 8xlarge EC2 实例上运行代码 尽管 RA
  • Windows UI 自动化无法识别按钮控件

    我在尝试通过以下方式识别时遇到问题Windows 用户界面自动化里面的按钮控件通知区窗口 类名 工具栏Window32 我通过验证Windows 用户界面自动化部署在的工具视窗软件开发工具包这些 图标 是类型控件ControlType Bu
  • Cocoa Pods 错误 ld:找不到 -lPods 的库

    我从可可豆荚中收到了以前从未见过的错误 我已经让它与几个依赖项一起工作得很好 我最近通过 pod 添加了 TestFlightSDK 作为依赖项 但无法存档该项目 它可以很好地适应设备 但拒绝存档 还有其他人遇到过这个问题吗 ld libr
  • 将 Jersey JUL 日志记录重定向到 Log4j2

    我需要将 Jersey 请求 响应日志重定向到我的 log4j2 我通过在我的设备上使用此代码启用了 Jersey 日志记录ApplicationJAXRS extends Application Override public Set
  • 为什么使用 Atlassian Crowd [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想了解 Atlassian 人群通过 LDAP 服务器做什么 看起来大多数 Atlassian 产品都允许您指向 Atlassian 服务器进行授权
  • 停止quartz调试日志记录log4j

    我一直试图关闭令人讨厌的石英调试日志记录 我正在使用 log4j 作为日志记录框架 并且我已经尝试将此行添加到 lg4j 属性文件中 log4j logger org quartz ERROR 我仍然收到大量这些调试日志消息 13 35 4
  • Android 联系人 RAW_CONTACT_ID 与 CONTACT_ID

    我正在使用联系人选择器 如下所示 Intent contactPickerIntent new Intent Intent ACTION PICK Contacts CONTENT URI startActivityForResult co
  • 将多个 PNG 制作成一个 ICO 文件 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 使用 Windows ICO 文件 您可以将多个不同大小的图像打包到同一个 ICO 文件中 然后 Win
  • 多风格设置中的 Android Gradle 1.0 计算版本代码

    计算不同产品风格的版本代码的代码不再在 Android Gradle 1 0 系统中运行 我之前成功地使用了下面的示例代码 http tools android com tech docs new build system tips TOC
  • 如何从 .m 文件创建可执行的 .exe 文件

    我想知道是否有一种方法可以在 MATLAB 中从 m 文件创建 exe 文件 这样它就可以在没有 MATLAB 的机器上运行 就像可以在 C C 中完成一样 我知道编写 MATLAB 函数是一种方法 但我不确定它是否可以在没有 MATLAB
  • JavaScript inflate 实现(可能仅限 FF 3.6)

    我正在编写一些在 FireFox 3 6 中使用 HTML 5 文件 API 的脚本 我有一些放气 压缩 的文件 我需要对它们进行充气 解压缩 我找到了一个few http www codeproject com KB scripting
  • 英特尔 XDK 中的 res/drawable 文件

    xdk中有没有办法将文件传输到android res drawable文件夹 我有以下文件 src android drawable noti icon png www src android drawable noti icon png
  • 长时间关闭时如何处理servlet请求

    我们需要在 Servlet 应用程序中实现优雅的关闭机制 编辑 我们希望使其尽可能简单 这将处理通过操作系统功能发送的终止信号 这将允许系统管理员使用内置的 shell 实用程序 Windows 上的kill 或taskkill 否则他们必
  • 反应本机保存屏幕到图像问题(react-native-view-shot 模块)

    我想得到反应本机视图镜头 https github com gre react native view shot工作 但我认为模块和我安装的 React Native 工具版本存在某种不兼容性 这阻碍了我的工作 核心问题似乎在于这段代码 i
  • 如何配置 OpenSL 来录制语音通话

    我正在使用 MediaRecorder 开发通话录音应用程序语音通话音频源 在某些棉花糖设备中它崩溃了 然后我将源更改为MIC这里传入的声音没有被记录 由于java的限制 现在我正在研究原生android代码来录制语音通话 我设法使用录制音
  • python 不被识别为内部或外部命令[重复]

    这个问题在这里已经有答案了 我尝试安装this https github com joyent node wiki Installation软件 为此需要Python 我从以下位置安装了Pythonhere http python org
  • PHP 中的随机 ID/数字生成器

    我正在我的数据库中构建一个 代理 ID 列表 满足以下要求 ID 长度必须为 9 位 仅限数字 ID 中的相同数字不得超过 3 个 ID 不能包含超过 2 个连续的相同数字 即 887766551 不能有 888 到目前为止 我已经完成了第