将大数字压碎,但将小数字保留在1到100范围内的公式



我在DOM中显示一个芯片作为div。

如果我有1个芯片,我有1个div,两个芯片,两个div,3个芯片,3个div,4个芯片,3个div

由于这可以快速获得高数字与许多芯片不同的颜色为9个玩家,我想要一个函数将这个数字限制为合理的值,同时保留芯片数量的视觉指示。

// Map range 1-100 to 1-20 in a super exponential fashion so smaller chips don't get any smaller, but big numbers get trimmed down.
function m_n_chips(actual_chips: number) {
if (actual_chips < 4) { return actual_chips }
// what else do I need here
}

描述的行为让我想起根函数。它不影响小的数字,但是我们插入到函数中的数字越大,它被压扁的次数就越多。

您可以更改"压扁因子"。通过x乘以系数

或者,你可以使用对数函数,它是指数函数的反面。这会导致更大的压扁效果

function m_n_chips(actual_chips: number) {
if (actual_chips < 4) { return actual_chips }
result = Math.sqrt(4 * x);
// other option: use logarithm
// result = Math.log(x) / Math.log(4);
return Math.round(result);
}

返回时将结果转换为最接近的整数。

希望有帮助!

(顺便说一句:将来请提供更多的信息,如语言,项目细节和你是如何想到你的问题的)

相关内容

  • 没有找到相关文章

最新更新