如何获得具有设定步数的两个数字之间的对数刻度c#

问题描述 投票:0回答:1

我希望能够获得两个数字之间的对数标度,对于c#中最大和最小值之间的x步数

例如

var steps = 10;
var minValue = 10;
var maxValue = 1000;

哪个将把这个数组的值返回到最接近的整数

[{1,10}, {2, 17}, {3,28}, {4,46}, {5,77}, {6,129}, {7,215}, {8,359}, {9, 599}, {10, 1000}]

有人能指出我正确的方向吗?

c# logarithm
1个回答
1
投票

要完全按照线形标度进行操作,只不过要用最小值/最大值的Math.Log确定步长,然后再用Math.Exp取消此变换:

var step = (Math.Log(maxValue) - Math.Log(minValue))/(steps - 1);
for (var i = 0; i < steps; i++)
{
    Console.WriteLine("{0}: {1:F0}", i + 1, Math.Exp(Math.Log(minValue) + i * step));
}
© www.soinside.com 2019 - 2024. All rights reserved.