C# 统计问题-将列表与自身进行比较
这是为你或统计人员准备的。您能告诉我,如果列表包含72786个“things”,那么循环末尾的compareCount的值是多少吗?我想应该是72786^2-1,但是这个老脑袋已经很久没有这样工作了。非常感谢您的时间和帮助C# 统计问题-将列表与自身进行比较,c#,statistics,computer-science,C#,Statistics,Computer Science,这是为你或统计人员准备的。您能告诉我,如果列表包含72786个“things”,那么循环末尾的compareCount的值是多少吗?我想应该是72786^2-1,但是这个老脑袋已经很久没有这样工作了。非常感谢您的时间和帮助 List<thing> theList = new List<thing>();//list contains 73,786 "things" private void compare() { int compareCo
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++;
}
}
}
List theList=新列表()//列表包含73786个“事物”
私有空比较()
{
int compareCount=0;
对于(int i=0;i
代码中的compareCount的值为(72786^2-72786)/2=2648864505
。我已经通过运行它确认了这一点。正如现在编写的,不需要在内部循环中调用compare(列表[i],列表[comp])
(因为它不会以任何方式影响计数)
下面是我对(n^2-n)/2
公式的记忆:一场由n
名玩家参加的循环赛,每个人与所有其他玩家只见面一次
匹配计划是一个正方形,包含
n
行和列(n*n=n^2
组合)。由于玩家不与自己比赛,因此必须减去从左上角到右下角对角线上的n
比赛(n^2-n
现在向左比赛)。对角线上方三角形中玩家A
与玩家B
的配对与下方三角形中玩家B
与A
的配对相同(此类配对中有(n^2-n)/2
)。从n^2-n
中减去这个数字将得到(n^2-n)/2
可能匹配的最终结果。为什么不运行它来找出答案呢?我-我正试图根据目前发生的情况来确定何时完成以及我可能预期的内存问题。如果列表中的计数^2-1正确,我大约完成了2%。如果这是正确的数字,那么在99%的CPU负载下,我有一个略少于30天的ETC。如果这只是一个数学问题,那么它不属于堆栈溢出。你应该把它贴在上面。作为一个可能的两方,但在我知道第一部分之前问第二部分是没有意义的。非常感谢!我是一个ditz,因为我没有想到在没有实际比较的情况下运行它(这需要花费所有的时间)。非常感谢你!我正在将结果转储到文件中,而我只考虑了文件名中的五个数字,这意味着我将在完成之前对文件名抛出一个异常。我已经做了3天了,但是现在重新开始比两周内完成要好得多。再次感谢你的帮助@Shannon Holsinger不介意:)顺便说一句,下次使用uint或long作为比较计数
,因为int将溢出。只想让你知道-多亏了你的帮助,我意识到我不仅需要停止/重建/重新启动,还需要减少采样大小以获得实际的运行时间。我有16.1亿个组合,有足够的空间保存它们。你救了我几天的浪费时间。很高兴,我能帮助你:)