首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网站上的服务器端随机数生成器

网站上的服务器端随机数生成器
EN

Stack Overflow用户
提问于 2013-08-06 09:20:30
回答 2查看 1.4K关注 0票数 2

我有一个网站,看,它目前每5分钟生成一个数字,每5秒生成一个更小的第二个数字,然后将这个数字加到第一个数字上,以给人一种数字波动的错觉。看看这个网站可能会有所帮助。

http://spinningcat.us/

这可能看起来很愚蠢,这基本上是一个内部笑话。

无论如何,问题是,据我所知,给出的数字是客户端的,并且因人而异。有没有可能让它成为服务器端?这样每个同时访问网页的人都会看到相同的数字?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-08-06 22:22:28

您需要在随机数生成器中设置种子,以便php rand()函数将向所有访问者返回相同的数,直到生成下一个随机数为止。

通过time()使用服务器上的当前时间

代码语言:javascript
复制
$fiveMinSeed = floor(time() / 300);
srand($fiveMinSeed);
$firstNumber = rand();


$fiveSecondSeed = floor(time() / 5);
srand($fiveSecondSeed);
$secondNumber = rand();

echo $firstNumber + $secondNumber;

这将生成两个不同的种子,一个基于每5分钟更改一次的时间,另一个每5秒更改一次。然后,使用这些值,您将获得一个“随机”数字,该数字对每个人都是相同的,直到种子发生变化。

您可以使用AJAX请求来获取数字并显示在页面上。

http://php.net/manual/en/function.srand.php

注意:

如果您使用的是mt_rand(),则使用mt_srand()设置种子

票数 2
EN

Stack Overflow用户

发布于 2013-08-06 09:22:02

您可以使用Ajax。Ajax向服务器发送一个请求,服务器将处理该请求并返回响应,而无需重新加载页面。一个好的教程here.

编辑:试试这个:

代码语言:javascript
复制
<script>
function loadXMLDoc(){
var xmlhttp;
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
  if (xmlhttp.readyState==4 && xmlhttp.status==200){
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
  }
}
xmlhttp.open("GET", "randomnumber.php");
xmlhttp.send();
}
setInterval(function(){loaxXMLDoc()},1000);
</script>

在PHP中:

代码语言:javascript
复制
echo $randomNumber

(我不是PHP用户,所以我不知道如何生成随机数。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18070351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档