首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >曲线上的映射值

曲线上的映射值
EN

Software Engineering用户
提问于 2014-01-25 20:20:38
回答 1查看 842关注 0票数 1

我有一个介于0到8000之间的值,我希望将这个数字解析为0到2000之间的另一个数字。我可以把它除以4,但我在这里有一个特别的需要。

对于4000以上的值,我希望映射的值偏向2000年。但是对于低于4000的值,我希望映射的值偏向于0。

这实际上是一个游戏,你可以在0到2000之间得到加分,这取决于你完成任务的速度。所以,如果你非常快,并在7500毫秒内完成它,你应该得到1875点(准确地说是7500 / 4)。如果你在6000毫秒内完成,你将得到1450分(略低于6000 / 4)。如果您速度慢,并在1000毫秒内完成,您将得到50毫秒(低于1000 / 4)。这个想法是奖励速度快的球员比慢的球员更多,但仍然让慢速的球员觉得他们已经取得了一些成就。我觉得一个“放松”的价值映射将实现这一点。

我希望这是合理的。你能帮我找出实现这个目标的代码吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2014-01-26 00:21:33

试试乙状体函数

它将把值从-(range/2) to +(range/2)映射到0.0到1.0之间的比例,中点为0 *)。好的是,改变range会产生不同的曲线。下面是一个使用sigmoid映射1-2000值的示例:

下面是使用范围(R)不同值的函数的两分

代码语言:javascript
运行
复制
  ms     r=6    r=20
    0      94       0
  500     135       0
 1000     190       1
 1500     265       3
 2000     364      13
 2500     490      45
 3000     641     151
 3500     814     445
 4000    1000    1000
 4500    1186    1555
 5000    1359    1849
 5500    1510    1955
 6000    1636    1987
 6500    1735    1997
 7000    1810    1999
 7500    1865    2000
 8000    1906    2000

*)实际上,它在-infinity之间映射到+无穷大,但就您的目的而言,选择一个从-10/+10到-30/+30之间的范围应该可以。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/225487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档