【问题标题】:Why isn't this php math code working为什么这个 php 数学代码不起作用
【发布时间】:2015-06-16 09:20:00
【问题描述】:

我正在尝试将此 as3 代码转换为 php,但它无法正常工作。我需要它,就像 as3 一样,谢谢!

PHP:

print(floor(rand() * 1000) + 3000);

结果:28240000

AS3:

var intCID = Math.floor(Math.random() * 1000) + 3000;
var strSessionId = String(intCID);
trace(strSessionId);

结果:3330

【问题讨论】:

  • 我认为 php 中不存在 random() 兄弟。
  • 如果您阅读过rand() 的文档,您就会知道它不会返回从 0.0 到 1.0 的浮点值。 rand(int, int) 的重载很可能是您正在寻找的。但是请阅读文档,并且下次请先这样做...问这些琐碎的问题会降低网站的整体质量。

标签: php actionscript-3


【解决方案1】:

您在没有参数的情况下调用rand(),并且根据文档:

如果调用时没有可选的 min、max 参数 rand() 返回一个介于 0 和 getrandmax() 之间的伪随机整数

所以你应该改用这个:

rand(0,1000)

【讨论】:

  • 谢谢它的工作试图投票给一个答案说我需要 15 个代表
  • 你应该点击左边的小勾
  • 啊说等3分钟^.^
【解决方案2】:

PHP 的 rand() 函数为您提供一个随机整数值,而不是浮点(十进制)值。因此,如果你做 * 1000,你会得到这个真正的大价值

请务必查看 PHP 手册的 rand() 函数。你会看到你可以为生成的随机数设置最小值和最大值,比如rand(1, 1000)

希望这有助于生成您的预期值。

【讨论】:

    【解决方案3】:

    说明

    int rand (void)

    int rand (int $min , int $max)

    如果在没有可选最小值的情况下调用,最大参数 rand() 返回一个介于 0 和 getrandmax() 之间的伪随机整数。例如,如果您想要一个介于 5 和 15 >(含)之间的随机数,请使用 rand(5, 15)。

    来源:http://php.net/manual/en/function.rand.php

    使用:rand(0,1) 得到相同的结果

    【讨论】:

      【解决方案4】:

      您的 AS3 代码会生成一个介于 3000 和 4000 之间的随机数,因此 PHP 中的等价物是:

      $rand = rand(3000, 4000);
      

      【讨论】:

        【解决方案5】:

        在 PHP 中,rand() 返回一个从 0 到 getRandMax() 的值,通常是 32767,并且是整数,因此对 PHP rand() 的调用应该模拟为以下 AS3 代码:

        Math.floor(Math.random()*32768) // returns 0..32767 as integer
        

        PHP 代码rand($min,$max) 模拟如下:

        Math.floor(Math.random()*(1+max-min))+min
        

        但是,无论如何期望 PHP 和 AS3 代码将返回完全相同的值。

        【讨论】:

          【解决方案6】:

          你应该使用better(性能方面)mt_rand()

          var_dump( mt_rand(3000, 4000) );
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-10-20
            • 2018-11-05
            • 2012-02-22
            • 2023-03-03
            • 2017-10-02
            • 2016-07-10
            • 2010-12-14
            相关资源
            最近更新 更多