一个系统必须支持 100 个用户,支持的价格是 3
一个系统必须支持 10 000 个用户,支持的价格是 1
我必须设计一个算法来给出介于两者之间的价格,这样它就会随着用户数量的增加而逐渐上升。
我尝试将用户数乘以 0.0002 以获得折扣值,我得到了
300 个用户 * 0.0002 = 0.06 折扣,因此支持价格 = 2.94
总收入 = 300 * 2.94 = 882
5000 个用户 * 0.0002 = 1 折扣,因此支持价格 = 2
总收入 = 5000 * 2 = 10 000
8000 个用户 * 0.0002 = 1.6 折扣,因此支持价格 = 1.4
总收入 = 8000 * 1.4 = 11 200
10 000 个用户 * 0.0002 = 2 折扣,因此支持价格 = 1
总收入 = 8000 * 1.4 = 10 000
所以你会看到在给定的点之后我实际上拥有更多的用户但收到的付款更少。
我不是数学家,我现在这不是一个真正的编程问题,但我不知道还能在哪里问这个问题。如果有人可以帮助我提供任何信息,我将不胜感激。谢谢!
最佳答案
price = n * (5 - log10(n))
将适用于 100 < n < 10000
。
只要确保您使用的是 base-10 日志而不是自然 (base-e) 日志。如果您的语言通常没有 base-10 日志,您可以这样计算:function log10(x) { return log(x)/log(10); }
。
对于 100 个用户,这是 100 * (5 - log10(100))
,它给出 100 * (5 - 2)
,即 300。
对于 1000 个用户,这是 1000 * (5 - log10(1000))
,它给出 1000 * (5 - 3)
,即 2000。
对于 10000 个用户,这是 10000 * (5 - log10(10000))
,它给出 10000 * (5 - 4)
,即 10000。
让我们选择一些更随机的数字。
2500 个用户: 2500 * (5 - log10(2500))
为我们提供 2500 * (5 - 3.39794)
,即 4005。
6500 个用户: 6500 * (5 - log10(6500))
为我们提供 6500 * (5 - 3.81291)
,即 7716。
8000 个用户: 8000 * (5 - log10(8000))
为我们提供 8000 * (5 - 3.90309)
,即 8775。
应该适合您正在建模的内容。
关于algorithm - 增加折扣的渐进非线性算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8049125/