【问题标题】:Manager game: How to calculate market values?经理游戏:如何计算市值?
【发布时间】:2019-04-14 09:48:14
【问题描述】:

通常,足球经理游戏中的球员具有市场价值。经理根据这些市场价值出售他们的球员。他们认为:“哦,这个玩家值 3,000,00,所以我会尝试以 3,500,000 的价格出售他”。

所有玩家都具备三个基本素质:

  • 强度值(1-99)
  • 他们可以达到的最大力量 (1-99)
  • 动机 (1-5)
  • 当前年龄 (16-40)

基于这些价值,我计算了此刻的市场价值。但是我想根据最近一段时间的球员转会动态计算市场价值。我怎么能这样做?

我有上述提到的品质和上一时期的球员转会可用于计算。

我该如何计算呢?我是否必须按质量对最后转会的球员进行分组并简单地取平均转会价格?

希望你能帮助我。

注意:玩家=物品/商品,经理=用户

【问题讨论】:

  • 我不明白这个问题是如何回答的。一个东西的“市场价格”是什么,不是一群程序员能回答的问题。如果没有更详细的环境知识,就没有合乎逻辑的理由选择一件事或另一件事。
  • 你在使用草率的语言。 “市场价格”是指某物可以在市场上获得的价格,但您似乎指的是游戏引擎编造的一个数字,没有任何意义。如果您要问如何根据过去的销售额计算实际市场价格,那么答案是肯定的,通过四个值和时间绘制过去的销售额,然后寻找趋势。
  • 您表中的值与您在问题中提供的值范围不匹配...
  • @Dominic Rodger:当然,一堆程序员可以回答这个问题。您可以根据之前的球员转会来计算价格。您可以取平均值或中位数并考虑质量。例如,您可以根据玩家的素质对他们进行分组或聚类。
  • @Beta:对不起,我写了“市场价格”,但也许“市场价值”更好。我指的是:“如果业主在正常条件下出售,他或她可以期望获得的财产的估计价值。”或“卖方在公开市场上合理预期的商品价格。”或“对房产最可能售价的预测。”

标签: statistics


【解决方案1】:

我的建议:定义一个distance function,它接受两个球员的统计数据并返回一个距离值。现在您在两者之间有了距离(对应于它们之间的相似性),您可以使用K-means 算法来查找相似玩家的集群。

对于每个集群,您可以采用一些值来帮助您计算所谓的“市场价格”(如平均值或中值)。

这是一个非常简单的示例,说明如何计算两个玩家之间的距离函数:

float distance(Player player1, Player player2){
    float distance = 0.0;

    distance += abs(player1.strength - player2.strength) / strengthRange;
    distance += abs(player1.maxStrength - player2.maxStrength) / maxStrength;
    distance += abs(player1.motivation - player2.motivation) / motivationRange;
    distance += abs(player1.age - player2.age) / ageRange;

    return distance;
}

现在您有了距离函数,您可以应用 k-means 算法:

  1. 将每个玩家随机分配到一个集群中。

  2. 现在计算每个集群的质心。在您的情况下,质心坐标将是(强度、最大强度、动机、年龄)。例如,要计算质心强度坐标,只需对集群中所有玩家的强度进行平均。

  3. 现在将每个玩家分配到最近的质心。请注意,在此步骤中,某些玩家可能会更改其集群。

  4. 重复第 2 步和第 3 步,直到收敛,或者换句话说,直到没有玩家在第 3 步中更改其集群。

现在您已经有了集群,您可以计算类似玩家的平均价格。

【讨论】:

  • 非常感谢! “市场价值只是实力、最大实力、动力和年龄组合相同的球员所有售价的平均值。”所以我必须编写一个距离函数,并且给定距离内的所有玩家都去一组,对吗?我可以将所有数据填充到矩阵中吗?如果我有集群,我只取价格的平均值。
  • 非常感谢您的详细编辑。 :) 我还有一些问题:如何确定最近的质心?如您所说,质心有4个坐标。我应该建立多少个集群?或者这不重要,因为我重复它直到收敛?
  • 找到最近的质心:只需计算与所有质心的距离并获得最小值。有一些数据结构可以使搜索更有效,比如 R-Tree,用于空间访问方法,但我认为你不需要那个......集群的数量由你决定,但是请注意,如果你得到的数字太高,你可能会得到一个糟糕的结果(比如一个集群中只有一个玩家)。我看过游戏将玩家分为 5 类(比如 1 到 5 颗星),但这只是一个想法......
  • 谢谢。但是要计算玩家和质心之间的距离,我需要质心的四个坐标,因为距离函数需要四个参数,对吧?我如何获得这四个坐标?通过平均该集群中所有玩家的坐标?例如:簇 [(1,2,3,4),(2,3,4,5),(8,4,2,8)] 的质心为 (3.6, 3, 3, 5.6)。这是正确的吗?
  • 非常感谢!最后一个问题:我已经编写了您的方法(请参阅问题中的编辑)。但它不能正常工作。所有玩家都去同一个集群。为什么?哪里错了?我也尝试过使用其他集群大小和玩家数量...
【解决方案2】:

您可以做的一件事是查看最近 (1) 名相似球员的转会情况。假设类似球员在 2-5 场比赛周内的所有转会,然后取其销售价格的平均值(或中位数或其他计算值)。

(1) 你必须以某种方式定义类似的,即防守+-10,传球+-3,年龄+-2 的后卫。更多的因素会产生更精确的结果。

【讨论】:

  • 谢谢。取平均值似乎是个好主意。我在某处读到:“市场价值只是力量、最大力量、动力和年龄组合相同的球员所有售价的平均值。”但是我该如何编码(例如在 PHP 中)?我不能为每个组合做 (1) ...
  • 您可以通过搜索所有统计数据为 +-2 的所有球员并平均他们的转会价格来简化此操作。另一种通用的方法是根据主导能力调整方差。因此,如果某个球员的最强数据正在传球,那么您使用 +-4,+-3 表示第二强,+-2 表示其余部分。您可以对年龄间隔做同样的事情,因为这也会对价格产生很大影响。您可能希望为年轻球员使用比处于职业生涯中期的球员更小的年龄跨度。
  • 您也可以在一个简单的查询中轻松完成此操作:SELECT AVG(transferPrice) FROM Transfers WHERE passing > @pass-2 AND passing
  • 但这会很复杂,不是吗?我必须为每个玩家这样做......
  • 嗯,是的,或者您可以针对某些预设技能水平进行操作,然后选择最接近您要比较的玩家的人,如果您想批量处理的话。
【解决方案3】:

或者您可以使用一点经济学 101 并尝试根据以下内容定义特定参与者的供需:

  • 联盟中具有类似能力的球员数量(您可以使用前面提到的聚类方法)以及“可”转会的球员数量
  • 拥有具有类似能力的球员的球队数量以及需要此类球员的球队数量

现在,您可以使用这些数字计算供应(可供转会的球员)和需求(需要这些球员的球队),并使用它来修改您的底价(可以是您的最后转会价或转会的底价)玩家)上涨或下跌(即需求多于供应会推高价格,反之亦然)

之后它变成了谈判游戏,您可以在其中查看一些博弈论文献来解决实际的交易价格。

希望这至少能给你一个不同的看法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多