2016-12-30 96 views
-4

我正在嘗試重新創建PokemonGO中的孵化蛋IV計算算法。如何從0-15中產生3組3個隨機數,並將它們平均爲一組三個數字?

對於攻擊,速度和HP,IV的值在0-15之間。 孵化蛋每個價值三次擲骰子,並取最高的一個。

例如,要計算攻擊IV,他們會生成3個隨機數並取最高的數,然後再用於速度,然後再用於HP。所以攻擊的數字將是10,10和14.

然後,它會選擇14,速度是11,12,15,所以它會選擇15,而惠普將是13,13,15 ,所以它會選擇15.相應的列表將是[14,15,15]。這是怎麼做到的?我試過了,我無法走到那麼遠。

+0

這聽起來像一個堅實的算法,你有什麼嘗試?什麼地方出了錯?你實際需要什麼幫助? –

+0

使用list.append()和max(list) –

+0

我試着做三個獨立的隨機數函數,並從這些函數中取出最大值。然後嘗試將其編入索引列表。我很難弄清楚如何使用生成的隨機值通過最大函數傳遞它,然後傳遞給列表。這是我無法弄清的部分。如何將這些隨機生成的數字傳遞給不同的函數。 –

回答

0

很簡單,您可以通過使用列表理解創建隨機數的列表,random.randint

rolls = [random.randint(0, 15) for _ in range(3)] 
#   minimum roll--^ ^--max   ^--number of rolls 

可以使用內置max功能(在這種情況下產生的表達,而不是確定的最大列表理解可以使用):

max_roll = max(random.randint(0, 15) for _ in range(3)) 

它作爲一個練習來找到最大的幾個這樣的計算。

+0

我試着把代碼放入提示符,但它沒有輸出。我做得不對嗎? –

+0

進口隨機 輥= [random.randint(0,15),用於在_範圍(3)] max_rolls = MAX(random.randint(0,15),用於在_範圍(3))沒有輸出 –

+0

@ RyanPostell如果你想看看結果,然後'打印'變量。 – MSeifert

相關問題