Math 从范围中获取数字的最佳方法?

Math 从范围中获取数字的最佳方法?,math,Math,这是一个有点数学导向,但我想知道最好的方法做以下 min = 20; max = 80; 给定一个1到x的数字,线性平均分布这些数字的最佳方法是什么 例如,当n=1值始终为min时,当n=x时,在这种情况下,值始终为max so 80 当n=x/2值为35时(最小值和最大值之间的中点) 如果这是一个类似于double getNum(min,max,x,n)的函数,它返回min/max之间的数字值,那么编写此函数的最佳方法是什么?推导以下公式非常简单: double nth(double min

这是一个有点数学导向,但我想知道最好的方法做以下

min = 20;
max = 80;
给定一个1到x的数字,线性平均分布这些数字的最佳方法是什么

例如,当
n=1
值始终为min时,当
n=x
时,在这种情况下,值始终为max so 80

n=x/2
值为35时(最小值和最大值之间的中点)


如果这是一个类似于double getNum(min,max,x,n)的函数,它返回min/max之间的数字值,那么编写此函数的最佳方法是什么?

推导以下公式非常简单:

double nth(double min, double max, int n, int x) {
    return min + (max-min) * ((double) n-1) / (x-1);
}

很抱歉,这是很难概念化的。如果你想要整数,最好的答案取决于你希望如何进行四舍五入,而这又取决于你想用这些数字做什么。你想用这些数字做什么?实际上不一定要四舍五入,可以是一个十进制数。当我在做的时候,像这样的函数有实际的名称吗?一定有人以前做过,对吧?不知道具体的名字,但肯定已经做过了。为什么nth(1100,5,10);输出45而不是50?@user1008134:因为步骤是1、12、23、34、45、56、67、78、89、100。如果您预期为50,则存在fencepost错误。也许您希望
n
从0开始,而不是从1开始?(如果您这样做,您还需要将调用更改为
nth(0,100,5,10)
,以及更改
nth
中的逻辑)啊,我知道,您的实现是正确的。谢谢