[C#] 로또 번호 추출하기

C# 2023. 6. 28. 13:14
728x90

자주 나오는 번호의 조합으로 로또 번호를 추출합니다.

using System;
using System.Collections.Generic;

public class LottoPredictor {
    public static void Main() {
        // 로또 번호 빈도를 계산할 기간 정의 (예: 최근 20번의 추첨)
        const int NumberOfResultsToAnalyze = 20;
        // 추첨 결과 리스트 작성
        List<List<int>> lottoResults = new List<List<int>>();
        // 최근 20회차 추첨 결과를 추가
        lottoResults.Add(new List<int> { 1, 5, 9, 19, 23, 33, 40 });
        lottoResults.Add(new List<int> { 4, 10, 14, 22, 31, 33, 35 });
        lottoResults.Add(new List<int> { 1, 7, 13, 14, 18, 25, 37 });
        lottoResults.Add(new List<int> { 2, 11, 21, 25, 28, 39, 42 });
        lottoResults.Add(new List<int> { 3, 4, 16, 30, 31, 37, 40 });
        lottoResults.Add(new List<int> { 4, 9, 10, 17, 32, 41, 43 });
        lottoResults.Add(new List<int> { 7, 11, 14, 17, 18, 26, 42 });
        lottoResults.Add(new List<int> { 3, 6, 17, 23, 34, 38, 41 });
        lottoResults.Add(new List<int> { 5, 25, 26, 27, 34, 39, 43 });
        lottoResults.Add(new List<int> { 13, 16, 18, 21, 27, 31, 41 });
        lottoResults.Add(new List<int> { 8, 19, 25, 34, 37, 39, 43 });
        lottoResults.Add(new List<int> { 8, 10, 17, 18, 29, 38, 44 });
        lottoResults.Add(new List<int> { 2, 4, 11, 18, 22, 26, 39 });
        lottoResults.Add(new List<int> { 7, 13, 14, 16, 17, 42, 43 });
        lottoResults.Add(new List<int> { 5, 8, 10, 11, 16, 34, 39 });
        lottoResults.Add(new List<int> { 4, 6, 15, 22, 38, 43, 45 });
        lottoResults.Add(new List<int> { 6, 8, 9, 14, 35, 44, 45 });
        lottoResults.Add(new List<int> { 1, 3, 12, 28, 34, 42, 45 });
        lottoResults.Add(new List<int> { 7, 13, 23, 27, 29, 35, 40 });
        lottoResults.Add(new List<int> { 9, 10, 25, 35, 38, 44, 45 });

        // 각 번호별로 나온 횟수 계산
        Dictionary<int, int> frequencyMap = new Dictionary<int, int>();
        foreach (List<int> result in lottoResults) {
            foreach (int number in result) {
                if (frequencyMap.ContainsKey(number)) {
                    frequencyMap[number]++;
                } else {
                    frequencyMap[number] = 1;
                }
            }
        }

        // 가장 빈도가 높은 6개의 로또 번호 출력
        List<int> predictedNumbers = new List<int>();
        for (int i = 0; i < 6; i++) {
            int maxFreq = -1;
            int maxNumber = -1;
            foreach (KeyValuePair<int, int> freq in frequencyMap) {
                if (freq.Value > maxFreq && !predictedNumbers.Contains(freq.Key)) {
                    maxFreq = freq.Value;
                    maxNumber = freq.Key;
                }
            }
            predictedNumbers.Add(maxNumber);
        }

        // 예측된 번호 출력
        Console.WriteLine("예측된 번호: " + String.Join(", ", predictedNumbers));
    }
}

 

728x90
Posted by kjun.kr
,