我正在尝试将一段代码从 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 看起来可用于 PHP和 Perl . 更新:尝试它会产生不同的结果,因此至少不会成功。
更新 2:根据您显示的 perl 编号,您的 perl 正在使用 drand48 库;我不知道这是否适用于 PHP,谷歌也没有帮助。
关于php rand vs Perl rand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6620790/