private void Calc() { // 初期化 foreach (Agent agent in VoteMap.Keys) { ReceiveVoteCount.Add(agent, 0); } // 被投票数のカウント foreach (Agent agent in VoteMap.Values) { // 存在しないエージェントに投票宣言することもあるので存在チェックする if (agent != null && VoteMap.ContainsKey(agent)) { ReceiveVoteCount[agent]++; // 被投票数の最大を記憶 MaxVoteReceiveCount = Math.Max(MaxVoteReceiveCount, ReceiveVoteCount[agent]); } } // 被投票率のカウント foreach (KeyValuePair <Agent, int> keyValue in ReceiveVoteCount) { ReceiveVoteRate.Add(keyValue.Key, keyValue.Value / (double)VoteMap.Count); } // 最大得票者の取得 foreach (KeyValuePair <Agent, int> keyValue in ReceiveVoteCount) { if (keyValue.Value == MaxVoteReceiveCount) { MaxVoteReceivedAgent.Add(keyValue.Key); } } }