【问题标题】:Server Side Random Number Generator on a Website网站上的服务器端随机数生成器
【发布时间】:2013-08-06 21:06:38
【问题描述】:

我有这个网站,看,它目前每 5 分钟生成一个数字,每 5 秒生成第二个较小的数字,并将该数字添加到第一个数字上,以产生数字在波动的错觉。看看网站可能会有所帮助。

http://spinningcat.us/

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

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

谢谢

【问题讨论】:

    标签: php html random numbers


    【解决方案1】:

    您需要为随机数生成器播种,以便 php rand() 函数将相同的数字返回给所有访问者,直到生成下一个随机数。

    使用来自服务器的当前时间与time()

    $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】:

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

      编辑:试试这个:

      <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 中:

      echo $randomNumber
      

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

      【讨论】:

      • 哦,感谢 Pokemon Showdown。 (高五)
      猜你喜欢
      • 2022-12-09
      • 1970-01-01
      • 2015-03-14
      • 2023-01-03
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多