更新-此问题适用于PHP<8.2-对于8.2+,您可以访问Randomizer


PHP supports `mt_rand()` and `mt_srand()`, but these are global and static.

我注意到在PHPC source中,mt_rand使用engine_mt19937实例;在PHP中有没有办法实例化我们自己的RNG实例,以便我们可以控制它的种子?

推荐答案

在PHP8.2+上是这样的.这一点见@AlexHowansky's answer.在早期的PHP版本中,没有.

您指向源代码的链接指向master分支,自上个月正式发布以来,其中已经包含了PHP8.2逻辑.这就是为什么master分支包括对MT19937发动机的引用.

在较旧的版本(例如最新的8.1 branch)上,您可以看到mt_rand()没有使用可配置引擎,而只是判断它是否已经被设定为种子.PHP8.1及更早版本对mt_rand()使用单个全局生成器,因此如果您想使用本地函数,则不可能有多个具有不同种子的RNG.

话虽如此,您可能可以针对PHP8.1推出自己的MT19937RNG实现.Others have.

Php相关问答推荐

如何修复警告:当使用WordPress get_the_Terms()时,Foreach()参数必须是ARRAY|OBJECT类型?

WooCommerce在购买后多次重定向

Laravel:如何展平多维Eager 加载的集合

我必须对所有的SQL查询使用预准备语句吗?

Chillerlan/php-iOS名称字段的QR vCard错误

在PHP中处理Linux输入事件(/dev/input/Event*)

在WooCommerce中添加特定产品类型的百分比费用和固定费用

PHP -将字符串拆分为两个相等的部分,但第二个字符串中的单词更多

使用DOMPDF获取PDF格式的本 map 像

在 WooCommerce 更新结帐事件上动态更新自定义内容

如何将不同的 Woocommerce 费用合并为一个名称?

无法使用 slim 的父级容器

带有分类术语数组的 WordPress Elementor 自定义查询 - 如何要求所有术语都在返回的帖子中

在 PHP 8.2 中使用 PHP Spreadsheet 和 CodeIgniter 3 导出 Excel 时出错

htaccess Rewriterule 无法以任何方式工作

基于WooCommerce中的产品变体自定义感谢页面跳转

PHP 将数组值插入到 csv 列

我需要获取传递到这个数组中的数据,但我没有得到它,因为在 Laravel 中数组是这样出现的

如果 static:: 被解析为B,为什么 PHP 会执行A的方法

复杂的mysql查询问题