2017-02-23 28 views
0

我试图找出写一点“算法”,这将是能够找到一个数学这两个数字之间的范围的好方法之间的范围内的元素一个不错的量:生成两个数字

Let's suppose maximum number is 1500 and minimum number would be 1; 

通过执行某种数学公式,方法将能够确定这两个数字之间的最佳范围可以说100;

所以范围是:

100,200,300,400,500,600,700,800,900,1000,1100,1200,1300,1400,1500

其它示例:

最大为10,最小值1;

最佳范围是(比方说):

2,4,6,8,10 

是否有在C#它提供这种解决方案还是有用于确定此一些巧妙的数学公式的库?

P.S.伙计们可以在数量上有余数...

我猜我可以将最大数字分成让我们说7个固定组,然后只加起来分开的数字,直到我得到的最大值,不是?

好的家伙,我已经想通了一个主意,让我们假设最大数目是一个浮点数是:1326.44 ...,而最低为132.5

I'm going to say that maximum range can be 7... So what I can do is divide 1326.44 with 7 and I'll get 189.49 

因此,在范围内的第一个量:

var ranges = new[] { 132.5, 189.5 ... /*Now I just need to dynamically somehow add the rest of the range elements?*/ }; 
+0

所以基本上你想找到一个复杂的数学表达式,简单地做一个没有余数的分裂? – Tinwor

+0

@Tinwor是的,可以有一个余数,我忘了提及... Sry –

+0

我猜我可以把最大数字分成6个固定组,然后加上除数,直到我得到最大值,不是吗? –

回答

1

这实际上是非常容易的。您有一个最小范围值和一个最大范围值,并且您想要范围内的特定数量的项目。因此,您只需计算一个步骤值,然后将其递归添加到最小值,直到达到最大值。例如:

var min = 132.5; 
var max = 1326.44; 
var count = 7; 

var step = (max - min)/count; 

var items = new List<double>(); 
for (var i = min; i <= max; i += step) 
{ 
    items.Add(i); 
}