php rand vs Perl rand

标签 php perl random

我正在尝试将一段代码从 perl 移植到 php。 perl 代码片段是 akamai 的视频点播链接生成脚本的一部分。该脚本根据视频文件的位置/URL 生成种子(对于单个 URL,它始终是不变的)。然后它用于生成流的序列号(基本上是使用种子的 1 到 2000 之间的随机数)。这是 perl 代码。

$seed=6718;
srand($seed);
print(int(rand(1999)) + 1); // return 442 every time
而转换后的PHP代码为:
$seed=6718;
srand($seed);
echo(rand(0, 1999) + 1); //returns 155 every time
php rand 的行为是否与 perl 不同?

最佳答案

是的。你不能依赖他们的算法是一样的。对于 perl,使用哪个 rand 取决于您的 perl 是为什么平台构建的。

使用特定算法可能会更幸运;例如,Mersenne Twister 看起来可用于 PHPPerl . 更新:尝试它会产生不同的结果,因此至少不会成功。

更新 2:根据您显示的 perl 编号,您的 perl 正在使用 drand48 库;我不知道这是否适用于 PHP,谷歌也没有帮助。

关于php rand vs Perl rand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6620790/

相关文章:

JavaScript - 在对象内打乱对象(随机化)

php - 在下一页中保留相同的单选按钮数据

regex - Perl CLI 就地字符串替换/用特殊字符替换多行

java - 如何使用 double 格式的数字为范围之间的随机间隔编写代码?

perl - 哈希键中哪些字符有效?

oracle - 在 mrskew 中,我可以从 tim 计算人类可读的时间戳吗?

python - C++ 和 Python 实现之间的不同伪随机数

php - 如何在 PHP 中向现有数组添加新的键值

PHP : Find repeated words with and without space in text

php - 为什么我的 SQL 不能插入工作?