[英]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代碼都將返回完全相同的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.