2014-10-20 48 views
-1

我有一些想法,但我不知道如何去做:D 基本上就像在遊戲中一樣,每6個小時你可以打開一個胸部,在那裏你可以免費獲得一些物品。現在我想擁有一個用戶可以每6小時打開一次的胸部,我有用mysql服務器編寫的項目,每個項目都給用戶提供經驗值。但怎麼做呢? 可以說,數據庫中有15個項目,現在每個項目都有例如 nothing = 75% of getting it sword_1 = 15% of getting it sword_2 = 30% of getting it 其偶然性價值的想法怎麼辦呢?如何編程'機會'?

+1

噸:查找「加權分佈」,你會發現很多解決這個問題的方法。 – BradleyDotNET 2014-10-20 17:34:40

回答

2
  1. 定義%的範圍來獲得一個項目 示例 - sword_1 = 0-15%,sword_2 = 15-45% 注意的是,上面的數字不爲100%,所以,除非你真的想要不止一次返回,有時候..上述範圍需要照顧一無所獲。 如果您想在一個卷軸上獲得多個獎勵,只需相應地調整範圍即可。

  2. 生成一個隨機數介於0和100之間。對於生成數量落入該範圍內的項目,這些是您在該回閤中獲得的獎勵。

0

您可以爲表格中的每個項目指定一個數值,獲得它的百分比將是它與其下一個最低數目之間的差異。

Nothing, 60 (60% chance) 
sword_1, 70 (10% chance) 
sword_2, 100 (30% chance) 

確保您最大的項目是100

然後,您可以做一個選擇從表一中的隨機數:

SELECT * FROM ChestItems WHERE ChanceValue < FLOOR(RAND() * 100) ORDER BY ChanceValue DESC LIMIT 1; 

有幾個(和更好的)方式你可以這樣做。這只是一個簡單的例子。