如何通过设定的步数获取两个数字之间的对数刻度 C#

How to get log scale between two number with a set number of steps c#

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

例如

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

return 这个数组的值最接近 int

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

谁能指出我正确的方向?

完全按照您对线性刻度所做的操作,不同之处在于您使用 min/max 值中的 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));
}