gpt4 book ai didi

php - MYSQL/PHP - 带 % 的随机行

转载 作者:行者123 更新时间:2023-11-30 21:54:53 25 4
gpt4 key购买 nike

我正在尝试根据 % 随机遇到怪物。

我在我的 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" }

对于 Monster 3 也是一样。主要问题是不允许我更改可用的怪物数量,另一个问题是我不知道如何获得每个怪物的 monster_chanceloot foreach。而且我不想建立 30 个 MYSQL 连接,所以避免每次都使用它。

谢谢!

编辑:这是“German Drulyk”给出的可能性:

我得到了Monster1Monster2Monster3。我在数据库中复制了 Monster1 2 次,复制了 Monster2 1 次。

我现在有 3 个 Monster1、2 个 Monster2 和 1 个 Monster3。所以:有 50% 的机会选择 Monster1,Monster 2 为 33,3,Monster 3 为 16,6。

为了获得更准确的结果,您可以将它们复制到 100 个以获得 1 个怪物 = 1%。要获得怪物,只需执行以下操作:

    $query=$db->prepare('SELECT * FROM MONSTERDDB ORDER BY RAND() LIMIT 1');
$query->execute();

最佳答案

如果您在一个区域中永远不会超过 100 个怪物,那么您需要一个包含 3 列的表格; zone_id, chance, monster_id

每个区域,插入 100 条记录,并将机会设置为 1 到 100(含)。

每条记录,根据其共性添加一个 monster_id;每个区域的所有 100 条记录都应该有一个 monster_id

比如zone1需要50条记录monster1,30条记录monster2,20条记录monster3

在 PHP 中,您可以这样编写查询

$sql = "select
monster_id
from
table_name
where
zone_id = $zoneId and
chance = ".rand(1, 100);

此外,我还没有尝试过这个,但我猜是原生的 MySQL can achieve the same effect :

$sql = "select
monster_id
from
table_name
where
zone_id = $zoneId and
chance = FLOOR( 1 + RAND() * 100 )";

关于php - MYSQL/PHP - 带 % 的随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45619552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com