C# 如何通过设定的步数c获得两个数字之间的对数刻度
我希望能够得到两个数字之间的对数刻度,对于c中最大值和最小值之间的x步数 例如 它将返回这个数组,其值为最接近的intC# 如何通过设定的步数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
[{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));
}
你是如何确定这个尺度的?你是如何确定这个尺度的?那太完美了非常感谢你这么做,这正是我想要的。这太完美了非常感谢你这么做,这正是我想要的