Javascript 根据距离坐标的距离,生成分数。(较低的客场距离=>;较高的分数)

Javascript 根据距离坐标的距离,生成分数。(较低的客场距离=>;较高的分数),javascript,math,Javascript,Math,我的问题是: 根据与坐标的距离,生成分数。距离越小,得分越高。这怎么可能呢?我是JS新手,数学不是很好,那么我该如何制作函数来实现这一点呢 1000将是可达到的最高分数,0将是可达到的最低分数。标记第一个回答此问题的人 图中提供了一个真实的示例。一款名为GeoGuessr的游戏根据离一个点的距离计算0-5000分。查看参考图像 非常感谢大家 当然有很多可能的方法,但这里有一个建议:使用高斯公式,如 score=1000*exp(-0.5*(距离/西格玛)^2) 其中,sigma是控制高斯曲线宽

我的问题是: 根据与坐标的距离,生成分数。距离越小,得分越高。这怎么可能呢?我是JS新手,数学不是很好,那么我该如何制作函数来实现这一点呢

1000将是可达到的最高分数,0将是可达到的最低分数。标记第一个回答此问题的人

图中提供了一个真实的示例。一款名为GeoGuessr的游戏根据离一个点的距离计算0-5000分。查看参考图像

非常感谢大家


当然有很多可能的方法,但这里有一个建议:使用高斯公式,如

score=1000*exp(-0.5*(距离/西格玛)^2)
其中,
sigma
是控制高斯曲线宽度的正参数,
exp
是指数函数(
Math.exp()
,在JavaScript中)。这样,距离=0对应于最大分数1000。分数随着距离的增加而单调减少,随着距离的增加,分数逐渐变为0→ ∞.


当然有很多可能的方法,但这里有一个建议:使用高斯公式,如

score=1000*exp(-0.5*(距离/西格玛)^2)
其中,
sigma
是控制高斯曲线宽度的正参数,
exp
是指数函数(
Math.exp()
,在JavaScript中)。这样,距离=0对应于最大分数1000。分数随着距离的增加而单调减少,随着距离的增加,分数逐渐变为0→ ∞.


如果你想要一个线性递减和严格的零分,那么你可以使用以下公式:

MaxPoints - distance * MaxPoints / DistanceForZeroScore
如果您不想得到负分数,可以添加
Math.max(公式,0)

点(A,B)和点(X,Y)之间的距离可以通过多种方式计算,但最自然的是:

例如,完整的公式可以是

Math.max(1000 - Math.sqrt((A-X)^2+(B-Y)^2) * 1000 / 3000, 0)

如果你想要一个线性递减和零分的严格分数,那么你可以使用以下公式:

MaxPoints - distance * MaxPoints / DistanceForZeroScore
如果您不想得到负分数,可以添加
Math.max(公式,0)

点(A,B)和点(X,Y)之间的距离可以通过多种方式计算,但最自然的是:

例如,完整的公式可以是

Math.max(1000 - Math.sqrt((A-X)^2+(B-Y)^2) * 1000 / 3000, 0)

如果这个问题涉及面很广,我深表歉意,但我尽量做到具体!!谢谢,如果这个问题涉及面很广,我深表歉意,但我尽量说得具体些!!谢谢你现在就开始做这件事,帕斯卡!我的不好,但你能提供另一个例子吗?作为exp,我将提供什么?它是说它不作为函数存在。请您填写此参数并在下面发送给我。非常感谢你的提问!我所说的“exp”是指JavaScript中的指数函数或
Math.exp()
。您认为我应该提供什么作为sigma@Pascal Getreurer sigma参数以与距离相同的单位缩放高斯宽度。我选择sigma作为一个足够近的距离,可以称之为“在附近”,但不能称之为“近”。或者从数量上说,在距离=sigma时,分数大约是最大值[1000*exp(-0.5)=606.5]的60%。现在看看帕斯卡!我的不好,但你能提供另一个例子吗?作为exp,我将提供什么?它是说它不作为函数存在。请您填写此参数并在下面发送给我。非常感谢你的提问!我所说的“exp”是指JavaScript中的指数函数或
Math.exp()
。您认为我应该提供什么作为sigma@Pascal Getreurer sigma参数以与距离相同的单位缩放高斯宽度。我选择sigma作为一个足够近的距离,可以称之为“在附近”,但不能称之为“近”。或者定量地说,在距离=Sigma,分数大约是最大值的60% [1000×EXP(-0.5)=606.5 ]。当距离从旧金山到LA变得更大时,函数以N/A返回。有什么想法吗?非常感谢much@PaulMcBurney也许某件事在某个时候超出了极限。将计算分解为几个步骤,并检查哪一个给出错误的值。当距离从旧金山到LA变大时,函数以N/A返回。有什么想法吗?非常感谢much@PaulMcBurney也许某件事在某个时候超出了极限。将计算分为几个步骤,并检查哪一步给出的值错误。