基于两个因素排名的公式

时间:2014-06-09 11:05:16

标签: math

这真是一个数学问题,我试图根据两件事给用户排名:他们做某事的时间和百分比。

基本上,最短时间+最高百分比给出最佳排名。相反,最长的时间+最低的百分比将给出最差的等级。

我试图为此找到一个公式。理想情况下,它会返回x点,然后我会根据用户所拥有的点对用户进行排序。

示例(完全随机):
- 用户有94%和2.3秒:他将获得123的排名点 - 用户有56%和2.3秒:他将获得87的排名点 - 用户有56%和5.1秒:他将得到73的排名点

选项:百分比的重量应超过最终结果中的时间

这是一个多么好的公式?

2 个答案:

答案 0 :(得分:2)

有两件事需要考虑:

  1. 每个因素的影响
  2. 因素之间的交叉影响
  3. <强>冲击

    这基本上分别对两个因素中的每一个进行评分,但将它们标准化并权衡它们。

    score = (factor_A_impact * player_score_of_factor_A / maximum_score_of_factor_A) + (factor_B_impact * player_score_of_factor_B / maximum_score_of_factor_B);
    

    <强>跨过

    这会增加交叉效果。实际上,得分A比B更重要,因为它影响B的结束值。交叉因子的范围从1到0. 0不调制b的影响,1是B因子的完全调制一个因素。您可以根据需要添加任意数量的因子,并以各种复杂的方式将它们链接起来。

    crossOverFactor = 0.2
    score_factor_A_normalised = (player_score_of_factor_A / maximum_score_of_factor_A);
    score_factor_B_normalised = (player_score_of_factor_B / maximum_score_of_factor_B);
    
    score_B_crossOveredByA = score_factor_B_normalised*(1-crossOverFactor) + (score_factor_A_normalised*crossOverFactor*score_factor_B_normalised);
    score = (score_factor_A_normalised*factor_A_impact) + (score_B_crossOveredByA * factor_B_impact);
    

答案 1 :(得分:0)

请说明最终目标是什么。它取决于什么,根据你更重要 - 百分比或时间。然后,您可以分配点,例如,如果有25个数据点,

stepValue = 100/25 # = 4
percentagePoints = ((25+1) - percentageRank)*stepValue

这将获得最高%100,接下来的96,然后是92等等。时间相同。

如果你认为一个比另一个更重要,那么可以采用两个分数的简单平均值/总和,或加权平均值(并设法确定哪一个比另一个更重要重要)。