Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何编写我自己的mt_rand()&;斯兰山?_Php_C_Suhosin_Code Migration - Fatal编程技术网

Php 如何编写我自己的mt_rand()&;斯兰山?

Php 如何编写我自己的mt_rand()&;斯兰山?,php,c,suhosin,code-migration,Php,C,Suhosin,Code Migration,我有一个大量使用mt_rand和mt_srand的应用程序,问题是许多主机提供商默认启用suhosin.mt_srand.ignore,这导致我的应用程序无法正常工作,因为种子无法工作 由于我的应用程序已经在一些托管服务器上运行(不支持此扩展),我想用php创建我自己的mt_rand&mt_srand函数,并让它们返回与内置函数相同的结果(对于相同的种子),这样,我将不依赖于主机提供程序是否启用了此扩展 我已经看过rand.c(),它是mt_rand()和mt_srand()的源代码,但是我对c

我有一个大量使用mt_rand和mt_srand的应用程序,问题是许多主机提供商默认启用suhosin.mt_srand.ignore,这导致我的应用程序无法正常工作,因为种子无法工作

由于我的应用程序已经在一些托管服务器上运行(不支持此扩展),我想用php创建我自己的mt_rand&mt_srand函数,并让它们返回与内置函数相同的结果(对于相同的种子),这样,我将不依赖于主机提供程序是否启用了此扩展

我已经看过rand.c(),它是mt_rand()和mt_srand()的源代码,但是我对c的了解很差,我自己无法将它迁移到php


有人知道怎么做吗?你可以尝试一个普通PRNG算法的纯PHP实现,例如


但是,请不要依赖这些数字来加密安全-这意味着使用这些数字,例如在游戏中生成随机迷宫,但不要加密你的日记。

你不应该这样做。好的随机数生成非常复杂。如果你坚持的话,看看这个问题:我已经看过这个问题了。缓存和编写不同的随机函数在我的情况下都不行,因为我无法提前告诉我的应用程序产生的每个种子是什么,我需要一个随机函数,它产生的结果与mt_rand和mt_srand产生的结果完全相同,对于向后兼容性。在任何情况下,@EdCottrell提到的问题似乎都没有世界上最大的PRNG。