2014-02-06 75 views
0

我想隨機化對象中的對象。簡單的編程數學

do{ 
     e = enemyList[Math.floor(enemyList.length * Math.random())]; 
    } while (e.level > (player.level + 5) && e.level < (player.level - 5)); 
    return e; 

我該如何做到這一點,所以「e」必須在5級以上和5級以下,以便循環停止?

是啊,這是很容易的,但我的頭很痛因爲某些原因:P

+4

它怎麼能同時在5層以上和5層以下? – Barmar

+0

你能多解釋一下還是舉個例子?我不知道你的意思是5級以上,5級以下。此外,它看起來好像你的函數只返回一個對象(除非我讀錯了),那爲什麼是循環? – BrettFromLA

+0

我希望敵人的等級在玩家的等級減5和加5之間。所以如果你是等級15,while語句應該在10到20之間停止 – ECMAScript

回答

3

我相信你應該使用一個or不是and。如果它低於5或者高於5。否則,條件永遠不會被滿足。

+0

爲什麼?我希望它只在-5到+5之間 – ECMAScript

+0

哦,我的印象是你希望它在上面和下面。在這種情況下,看起來NPE的答案會做你正在尋找的東西。 –

+0

+1不,這實際上是正確的答案,因爲OP希望循環在「e」超出範圍時繼續。如果OP遵循此答案,那麼一旦「e」處於範圍內,循環將退出。 – Matt

2

你有比較以錯誤的方式(+應該-反之亦然):

} while (e.level > (player.level - 5) && e.level < (player.level + 5)); 

(你的問題的措辭是有些模棱兩可的;它可能是你應該使用>=<=而不是><。)

+0

訂單有什麼不同?除非有副作用,'&&'是可交換的。 – Barmar

+0

@Barmar:如果仔細觀察,差異不僅僅在於訂單(事實上,它與訂單無關)。 – NPE

+1

你已經改變了這個意義 - 你正在測試'e'是否低於5和低於5。 – Barmar