php sql删除率系统

php sql删除率系统,php,sql,Php,Sql,这个问题可能看起来有点奇怪,但是 我运行一个用PHP编写的黑手党风格的游戏网站。当玩家犯罪时,他们很有可能会被“打倒”,比如说一件新武器 我现在是如何让它工作的是他们所做的每一次犯罪,我从10个中运行一个rand(),如果它达到10,那么我会从Armocrams_db表中随机选择一行,并给他们这个值 但我想做的是,使每种武器都有不同的“下降”百分比,这样威力更大、价格更昂贵的武器下降的更少,而便宜的武器下降的更频繁。目前,你买便宜的机会和买贵的一样多 有人知道我该怎么添加这个吗?我是否需要向火器

这个问题可能看起来有点奇怪,但是

我运行一个用PHP编写的黑手党风格的游戏网站。当玩家犯罪时,他们很有可能会被“打倒”,比如说一件新武器

我现在是如何让它工作的是他们所做的每一次犯罪,我从10个中运行一个rand(),如果它达到10,那么我会从Armocrams_db表中随机选择一行,并给他们这个值

但我想做的是,使每种武器都有不同的“下降”百分比,这样威力更大、价格更昂贵的武器下降的更少,而便宜的武器下降的更频繁。目前,你买便宜的机会和买贵的一样多


有人知道我该怎么添加这个吗?我是否需要向火器数据库中添加另一个具有丢弃率值的字段,然后使用该字段?

最简单的方法可能是始终选择一个项目,然后使用丢弃率列来确定他们是否实际获得该项目。您可以将其设置为%几率,并将其存储为整数。

您可以编写一个公式:对于给定级别的武器和类型的武器,您可以获得“下降”率。可以使用对数/指数来获得非线性曲线

您还可以使用一个非常简单的公式:

chanceOfDrop=(maxprice-priceOfWeapon)/maxprice*randomFactor()


例如,使用介于-0.8和1.2之间的randomFactor()。

您可以尝试向表中添加一列,以某种方式对武器进行排序。例如,您可以将
火箭发射器
评级为10,而
牙签
评级为2

数据库表可能如下所示:

+---------------------------------+
|    weapon           |  rating   |
|    rocket_launcher  |  10       |
|    toothpick        |  2        |
+---------------------------------+
你可以做一个
rand()。假设您将结果存储在res中。然后,查询数据库:

SELECT * FROM weapons WHERE rating <= res

SELECT*从我认为您希望实现的武器等级中(即指定每个项目的机会)。您可以显示您的db模式吗。简短的回答是肯定的,添加另一个允许对武器进行评级的专栏可能是最容易的。否则如何判断武器的等级。这种方法不会给你同样的概率得到顶级武器或垃圾武器吗?如果第一个
rand()
输出10,它会给你同样的概率。如果你的第一个
rand()
低于10,那么你将无法获得该武器-获得
火箭发射器比获得
牙签更难。一旦你剔除了排名靠前的武器,你将有同样的机会从查询结果中获得任何武器。好的,谢谢,所以我的查询类似于
SELECT*from db_arms WHERE rating what what what what,以便我将下降率存储为武器表条目中的一个新字段?那么,我如何根据下降率概率提取记录呢?对不起,如果我误解了,数学不是很好:P