2

我正在开发一些应用程序,需要验证随机数生成的一些结果。我可以在 PHP 中完成,与源应用程序相同,但速度很慢。我们想用 C 编写验证器以提高速度。问题是 C 中 MT 算法的每个实现都会产生与 PHP 中不同的结果(使用相同的种子)。

最大的问题是来自 PHP 的数据已经生成,并且已经在数据库中记录了两个多月 - 我们不能只更改 PHP 中的生成器(更改为我知道与标准 C 结果匹配的类)。

我相信它与整数大小和 PHP 的有符号/无符号问题有关 - 我们的 32 位实现的 MAX_RAND 为 21.47 亿(或任何确切数字),而 C 中的相同数据类型为 -21.47 亿到 21.47 亿,如果签名,如果未签名,则为 43 亿。

有没有办法限制 C 中的最大整数大小?或者有谁知道使用相同的种子,我们可以产生相同的结果的实现?我真的不想在 PHP 中这样做 - 相比之下它的速度慢得离谱。

4

0 回答 0