我正在試圖隨機遇到一個基於%的怪物。MYSQL/PHP - 隨機行%
我在MySQL數據庫有一個名爲 「monster_chancespawn」 列:
- 怪獸1有50%
- 怪物2得到30%
- 怪物3得到20%
我想要做的是根據這些%在我的「怪物」數據庫中隨機執行MySQL SELECT
。
我已經得到了這個
$monsterspawn=$db->prepare('SELECT * FROM monster');
$monsterspawn->execute();
$monsterspawn->CloseCursor();
foreach ($monsterspawn as $infospawn)
{
echo . $infospawn["monster_chanceloot"] . ;
}
據此,通常回聲 「50 30 20」,但沒有真正有用的。 我想要做的是:
- 獲得每個怪物的戰利品的機會。
- 也許會做一些類似於「如果rand在0到50之間,產生怪物1.如果它在50到80之間,產生怪物3.如果它在80到100之間,產生怪物3.但是我希望這是靈活,並改變當我改變了
monster_chanceloot
值
我可以做這樣的事情我想
$randomspawn = rand(0, 100);
if ($randomspawn >= 0 && $randomspawn <= $infospawn["monster_chanceloot"])
{ $monstername = "Monster1" }
elseif ($randomspawn >= $infospawn["monster_chanceloot"] && $randomspawn <= $infospawn["monster_chanceloot"](Monster 2's one))
{ $monstername = "Monster2" }
而且同樣的事情怪物3的主要問題是其不會讓我改變可用的怪物的數量,另一個問題是我不知道如何在每個怪物之外獲得每個怪物的怪物_魔獸世界e foreach
。我不想做30個MYSQL連接,所以不要每次都使用它。
謝謝!
編輯:這裏是「德國Drulyk」給出一個可能性:
我Monster1,Monster2,Monster3。 我複製Monster1 2次在我的數據庫和Monster2 1時間。
我現在3 有Monster1,2 Monster2和1 Monster3。 所以:有50%的機率選擇一個怪物1,怪物2的怪物爲33,3,怪物3的怪物爲16,6。
爲了獲得更加準確的結果,可以將它們複製到100有1個怪物= 1%。爲了得到一個怪物,只需做:
$query=$db->prepare('SELECT * FROM MONSTERDDB ORDER BY RAND() LIMIT 1');
$query->execute();
你會創造超過100個怪物嗎?如果某些怪物在其類型/等級內具有相同的確切機會,該怎麼辦?想象一下這個場景; 50%的時間應該是怪物1或2,30%的時間應該是怪物3,而20%的時間應該是怪物4或5 – MonkeyZeus
我看到了,我會寫出答案 – MonkeyZeus
(刪除了我的最後一條評論,對不起,我不太瞭解)。首先,它會有5到20個怪物,而不是一個大數字。對於你的例子,通常沒有人可以在我的數據庫中擁有相同的百分比,但是如果是這樣的話,那麼我只是然後我不知道,因爲我將它限制爲100%,這意味着如果我放置另一個怪物,我會減少其他怪物的百分比相等。 (50至40%,30至24 ..) –