2011-04-19 41 views
0

我一直在使用mt_rand(10,100)得到10到100之间的随机数,但它每次都给我74。破碎的随机PHP

继承人什么IM与

$success=mt_rand(10,100); 

任何想法的工作?我需要种子吗?提前致谢。

---编辑---

我刚才想这

srand(microtime()); 
    $success=rand(10,100); 

每次仍然给相同的答案,47

---编辑---

这是整件事

srand(microtime()); 
$success=rand(10,100); 
echo $success; 
if ($success == 100) { 
    $displayline="You succeeded"; 
    session_register("displayline"); 
    header("location:userhome.php"); 
} 
+0

您可能需要显示更多代码。正如我在循环中运行它,并按预期收到许多不同的随机数。事实上,在50的循环中,我没有收到1'74'。这是在PHP 5.3上 – 2011-04-19 19:25:21

+2

您使用的是哪个版本的PHP?你是否手动给发生器播种? – NikiC 2011-04-19 19:25:31

+0

即时通讯使用PHP 5.2 – Trent 2011-04-19 19:28:55

回答

1

您运行的是哪个版本的PHP?在4.2.0中,mt_rand()被更改为自动播种。

您可以使用mt_srand($ seed)对其进行种子处理,从而提供种子值。我使用microtime()函数的输出。

编辑:由于你在5.2上,请检查你的代码,看看是否正在调用mt_srand()并注释掉所有这些调用。

+0

我使用的是php 5。2 – Trent 2011-04-19 19:30:54

+0

@Trent:你有绝对的把握吗,你是否会**生成发电机? – NikiC 2011-04-19 19:35:09

+0

是的,我试过播种,而不是播种。没有不同。 – Trent 2011-04-19 19:37:38

0

这很奇怪。如果你只是做mt_rand()你会得到什么? mt_getrandmax()的价值是多少?

尝试mt_srand()

0

删除所有的秧苗功能,不增加他们回来,然后重新启动服务器。

此外,我发现this PHP bug,它发生在Windows系统与一些版本的php.ini文件。

+0

@Trent你知道是什么原因造成的吗? – 2011-04-28 22:55:47