统计问题 - 比较列表与自身

时间:2016-08-31 13:18:22

标签: c# statistics computer-science

这是给你CompSci或统计人员。如果该列表包含72,786和#34;东西,那么请告诉我," compareCount的值在循环结束时是什么?我认为它是72,786 ^ 2-1但是这个老脑子就像那样工作已经很久了。非常感谢你的时间和帮助!

List<thing> theList = new List<thing>();//list contains 73,786 "things"
    private void compare()
    {
        int compareCount = 0;
        for(int i = 0; i < theList.Count-1; i++)
        {
            for(int comp = i + 1; comp < theList.Count; comp++)
            {
                compare(theList[i], theList[comp]);
                compareCount++;
            }
        }

    }

1 个答案:

答案 0 :(得分:3)

代码中的compareCount将具有值(72786^2 - 72786) / 2 = 2648864505。我通过运行它确认了。正如现在所写的那样,内部循环中不需要调用compare(theList[i], theList[comp])(因为它不会以任何方式影响计数)。

以下是我记得(n^2 - n)/2公式的方法:与n玩家进行的循环赛,每个玩家都会与其他所有玩家完成一次。

匹配计划是一个包含n行和列(n * n = n^2组合)的正方形。由于玩家不与自己对战,因此必须减去从左上角到右下角的对角线上的n匹配(现在剩下n^2 - n匹配)。在对角线上方的三角形中,玩家A与玩家B的配对与下方三角形中BA的配对相同((n^2 - n)/2这样的配对)。从n^2 - n中减去此数字会得出(n^2 - n)/2可能匹配的最终结果。