簡體   English   中英

為什么這個php數學代碼無法正常工作

[英]Why isn't this php math code working

我正在嘗試將此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的rand()函數為您提供一個隨機的整數值,而不是浮點(十進制)值。 因此,如果您* 1000,您將獲得此真正的大價值

確保檢查PHP手冊的rand()函數。 您會看到可以為生成的隨機數設置最小值和最大值,例如rand(1, 1000)

希望這能幫助您產生預期的價值。

您正在調用不帶參數的rand() ,並且根據docs:

如果在沒有可選min的情況下調用,則max參數rand()返回介於0和getrandmax()之間的偽隨機整數

所以你應該改用這個:

rand(0,1000)

描述

整數rand(void)

整數rand(整數$ min,整數$ max)

如果在沒有可選min的情況下調用max參數,則rand()會返回介於0和getrandmax()之間的偽隨機整數。 例如,如果要5到15之間的一個隨機數>(含),請使用rand(5,15)。

資料來源: http : //php.net/manual/en/function.rand.php

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

您的AS3代碼會生成3000到4000之間的隨機數,因此PHP中的等價項為:

$rand = rand(3000, 4000);

在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代碼都將返回完全相同的值。

您應該使用更好的 (性能明智) mt_rand()

var_dump( mt_rand(3000, 4000) );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM