为什么这个PHP数学代码不起作用

时间:2015-06-16 09:20:00

标签: php actionscript-3

我正在尝试将此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

6 个答案:

答案 0 :(得分:0)

PHP的rand()函数为您提供随机整数值,而不是float(十进制)值。因此,如果你做* 1000

,你会获得真正的巨大价值

请务必查看PHP手册的rand()功能。您将看到可以为生成的随机数设置最小值和最大值,例如rand(1, 1000)

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

答案 1 :(得分:0)

您正在调用rand()而没有参数,并且根据文档:

  

如果在没有可选的min,max参数的情况下调用,则rand()返回0和getrandmax()之间的伪随机整数

所以你应该改用它:

rand(0,1000)

答案 2 :(得分:0)

  

说明

     

int rand(void)

     

int rand(int $ min,int $ max)

     

如果在没有可选min的情况下调用,则max参数rand()返回0和getrandmax()之间的伪随机整数。例如,如果您想要5到15之间的随机数(包括),请使用rand(5,15)。

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

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

答案 3 :(得分:0)

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

$rand = rand(3000, 4000);

答案 4 :(得分:0)

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

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

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

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

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

答案 5 :(得分:0)

您应该使用better(表现明智)mt_rand()

var_dump( mt_rand(3000, 4000) );