본문 바로가기

디지털포렌식(Digital forensic)/숫자

데이터 분석으로 알아보는 2023년 로또 번호 빈도 분석

반응형

※ 파일은 포함되어 있지 않습니다.

출처: 디지털경제

 

많은 분들이 로또번호 분석에 대한 흥미로
디지털 암호학, 암호해독에 관심을 가져주심에 감사드린다.
거듭 말하지만 로또번호는 암호가 아니다.

 

진화된 과학 기술로 숫자를 분석해서 흥미롭게 암호학과 수학에 접근하고자

예를 들어 설명하는 용도로 사용하는 example임을 분명히 말씀드린다.

 

여러분들이 묻는다.
그렇게해서 당첨된적이 있거나 어떤 경향이 있는지를.
결론부터 말하면 '60% 이상 긍정적이다'고 말할 수 있다.
왜냐면 적어도 금액이 크던 작던간에 매주 당첨은 되고 있다.
필자는 이와 어떤 형태의 비즈니스도 하고 있지 않으며 관련되어 있지도 않다.
다만, 개인적으로 문의를 하는 분들의 질문에 대답 정도는 해드릴 수 있다.

 


이번에 다룰 데이터는 

과연 2023년에는 어떤 숫자들이 많이 나왔나를 분석하는 코드다.



아래는 2023년 동안에 1등에 당첨된 번호들을 입력하여 당첨되는 빈도를 추출하는 코드로
결과부터 보면 가장 자주 당첨된 번호는 45(10회 당첨)이고 가장 적게 당첨된 번호는 2(1회 당첨)다.
이와 같은 순서가 된다. 한가지 당부드리고 싶은 것이 있다.

 

 

이미 랜덤 결과가 나온 숫자를 가지고
앞으로 당첨될 숫자를 예측하는 것은 불가능하다.

 

Number 45: 10 times
Number 32: 9 times
Number 3: 8 times
Number 22: 8 times
Number 38: 8 times
Number 23: 8 times
Number 6: 8 times
Number 30: 8 times
Number 35: 8 times
Number 33: 7 times
Number 24: 7 times
Number 7: 6 times
Number 27: 6 times
Number 18: 6 times
Number 19: 6 times
Number 13: 5 times
Number 14: 5 times
Number 21: 5 times
Number 26: 5 times
Number 1: 5 times
Number 4: 5 times
Number 10: 5 times
Number 40: 5 times
Number 20: 5 times
Number 28: 5 times
Number 8: 4 times
Number 16: 4 times
Number 31: 4 times
Number 36: 4 times
Number 37: 4 times
Number 11: 4 times
Number 12: 3 times
Number 34: 3 times
Number 9: 3 times
Number 43: 3 times
Number 41: 3 times
Number 29: 2 times
Number 42: 2 times
Number 44: 2 times
Number 17: 2 times
Number 25: 2 times
Number 5: 2 times
Number 15: 1 times
Number 2: 1 times


숫자들은 무작위로 추출되고, 이전 숫자와는 어떤 상관도 없다.
어떤 번호가 나올지는 모른다. 모든 것은 오로지 당신의 운이다.

 

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        int[][] numbers = new int[][]
        {
            new int[] { 8, 12, 13, 29, 33, 42 },
            new int[] { 3, 7, 14, 15, 22, 38 },
            new int[] { 21, 26, 27, 32, 34, 42 },
            new int[] { 1, 9, 16, 23, 24, 38 },
            new int[] { 13, 16, 23, 31, 36, 44 },
            new int[] { 4, 8, 18, 24, 37, 45 },
            new int[] { 6, 10, 11, 14, 36, 38 },
            new int[] { 4, 8, 17, 30, 40, 43 },
            new int[] { 3, 7, 9, 33, 36, 37 },
            new int[] { 1, 23, 24, 35, 44, 45 },
            new int[] { 1, 6, 20, 27, 28, 41 },
            new int[] { 6, 18, 28, 30, 32, 38 },
            new int[] { 16, 18, 20, 23, 32, 43 },
            new int[] { 1, 2, 11, 21, 30, 35 },
            new int[] { 3, 6, 14, 22, 30, 41 },
            new int[] { 1, 10, 18, 22, 28, 31 },
            new int[] { 4, 7, 19, 26, 33, 35 },
            new int[] { 7, 10, 19, 23, 28, 33 },
            new int[] { 6, 11, 16, 19, 21, 32 },
            new int[] { 3, 18, 19, 23, 32, 45 },
            new int[] { 3, 6, 9, 18, 22, 35 },
            new int[] { 3, 6, 22, 23, 24, 38 },
            new int[] { 20, 31, 32, 40, 41, 45 },
            new int[] { 4, 24, 27, 35, 37, 45 },
            new int[] { 3, 10, 24, 33, 38, 45 },
            new int[] { 7, 10, 22, 25, 34, 40 },
            new int[] { 11, 23, 25, 30, 32, 40 },
            new int[] { 8, 13, 19, 27, 40, 45 },
            new int[] { 13, 20, 24, 32, 36, 45 },
            new int[] { 4, 7, 12, 14, 22, 33 },
            new int[] { 14, 19, 27, 28, 30, 45 },
            new int[] { 22, 26, 29, 30, 34, 45 },
            new int[] { 5, 17, 26, 27, 35, 38 },
            new int[] { 21, 26, 30, 32, 33, 35 },
            new int[] { 6, 12, 31, 35, 38, 43 },
            new int[] { 3, 5, 13, 20, 21, 37 }
        };

        // Flatten the 2D array to a single list of numbers
        List<int> allNumbers = numbers.SelectMany(row => row).ToList();

        // Find the frequency of each number
        var numberFrequencies = allNumbers.GroupBy(num => num)
                                          .Select(group => new { Number = group.Key, Frequency = group.Count() })
                                          .OrderByDescending(item => item.Frequency)
                                          .ToList();

        // Find the most frequently occurring numbers
        int maxFrequency = numberFrequencies.First().Frequency;
        var mostFrequentNumbers = numberFrequencies.Where(item => item.Frequency == maxFrequency)
                                                  .Select(item => item.Number)
                                                  .ToList();

        // Display the results
        Console.WriteLine("Number Frequencies:");
        foreach (var item in numberFrequencies)
        {
            Console.WriteLine($"Number {item.Number}: {item.Frequency} times");
        }

        Console.WriteLine("\nMost Frequent Numbers:");
        foreach (var number in mostFrequentNumbers)
        {
            Console.WriteLine(number);
        }
    }
}

728x90