我正在试图随机遇到一个基于%的怪物。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 ..) –