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

C# 如何通过设定的步数c获得两个数字之间的对数刻度,c#,logarithm,C#,Logarithm,我希望能够得到两个数字之间的对数刻度,对于c中最大值和最小值之间的x步数 例如 它将返回这个数组,其值为最接近的int [{1,10}, {2, 17}, {3,28}, {4,46}, {5,77}, {6,129}, {7,215}, {8,359}, {9, 599}, {10, 1000}] 有人能给我指出正确的方向吗?请像处理线性比例一样执行此操作,只不过您需要使用最小/最大值的Math.Log来确定步骤,然后执行Math.Exp来撤消此转换: var step = (Math.Lo

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

例如

它将返回这个数组,其值为最接近的int

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

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

请像处理线性比例一样执行此操作,只不过您需要使用最小/最大值的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));
}

执行此操作时,与对线性比例执行此操作时完全相同,不同的是,使用最小/最大值的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));
}

你是如何确定这个尺度的?你是如何确定这个尺度的?那太完美了非常感谢你这么做,这正是我想要的。这太完美了非常感谢你这么做,这正是我想要的