如何计算给定宽度和高度范围的尺寸对的唯一数量?

时间:2018-03-31 11:49:59

标签: math

在我的程序中,我生成了唯一的WidthxHeight对,例如: 20x25。 假设我的范围高度从20到40,范围宽度为10到50。

在我的场景中,不应该有双倍的对,例如如果有20x25,则不会有25x20,因为它会有点相同。

我已经有了一个有效的实现,它可以在循环中正确生成。

现在我正在寻找的是数学计算预先显示它的组合数量,而不是整个循环。

我相信必须有一个我可以用来做的快速计算吗?

1 个答案:

答案 0 :(得分:0)

(这个问题是编程问题的边缘。我会在这里给出一个简短的答案,但是在你添加一些自己的工作之后,也可以在Mathematics Stack Exchange网站上询问这个问题。 #39;让我的回答有点模糊,并将编码留给你。)

首先确定你将得到多少对。在您的情况下,有40-20+1 = 21个高度和50-10+1 = 41宽度,因此总共有21*41 = 861个对。

现在您需要减去重复数量。首先找到可以是高度和宽度的数字范围。在您的情况下,2040,即40-20+1 = 21个数字。 A"重复"这里配对将有两个不同的数字,其中较大的数字首先。 (我们考虑的情况是,较大的一个最后是"原始"。)从21选项中取得的不同数字对的数量,其中第一个大于第二个是一个着名的组合问题,有多种方法可以找到公式。我在这里只是说答案是来自221对的21*20/2 = 210组合。

所以你的双重对的总数是861-210 = 651

我用Python表达式

检查了这个特例
len(set([tuple(sorted((h,w))) for h in range(20,41) for w in range(10,51)]))

得到了预期的结果651

你可以把它变成一般案例的简短计算吗?