Défiez LOTO 6 avec Python sans discipline

Préface

Eh bien, je sais que cela a déjà été analysé et je ne suis pas parvenu à une conclusion particulièrement remarquable. Pourtant, si j'étudie Python, je vais essayer.

Environnement de développement

Acquisition de données passées

Je ne peux pas faire de copier-coller manuel, j'ai donc décidé de le gratter. Les dernières données à ce jour (20/10/09) sont les 1524.

Dans LOTO6, 6 nombres réels et 1 numéro bonus seront tirés, mais cette fois nous ne jouerons qu'avec ce numéro. Les numéros tirés seront 1-43 et ne seront pas dupliqués.

scloto6.py


import requests
from bs4 import BeautifulSoup

r = requests.get('http://hogehoge.com/loto6/data/list1/')
soup = BeautifulSoup(r.content, "html.parser")
numbers = soup.find_all('td', class_='w4')

i = 1
with open('index.txt','w') as f:
    for number in numbers:
        s = number.text.replace('\t', '')
        s = s.replace('\n', '')

        if len(s) == 1:
            s = '0' + s
        if (i % 6) != 0:
            s = s + '\t'
        else:
            s = s + '\n'
        f.write(s)
        i += 1

Un fichier texte délimité par TAB comme celui-ci sera généré.

index.txt


02 08 10 13 27 30
01 09 16 20 21 43
01 05 15 31 36 38
16 18 26 27 34 40
09 15 21 23 27 28

En l'utilisant comme fichier d'entrée, le traitement suivant est effectué.

--Calculer σ à partir de la somme de chaque temps

Puisque la moyenne du total de chaque fois jusqu'au 1524e temps est de 131,94 et que σ est de 28,37, -σ à σ est compris entre 103,57 et 160,31.

Le nombre de données Pourcentage
-σ~σ 1,042 68.37%
-2σ~2σ 407 95.08%
-3σ~3σ 73 99.87%

En d'autres termes, la probabilité que la valeur totale des 6 nombres se situe entre 104 et 160 est d'environ 2/3. Les résultats de loterie tels que [1, 2, 3, 4, 5, 6] sont 21 au total et s'écartent de 3σ, vous pouvez donc presque les ignorer (≒ abandonner si cela se produit).

pyloto6.py


import math
import random
import numpy as np

appearance_count = {}       #Nombre d'occurrences de chaque numéro

for i in range(44):
    appearance_count[i] = 0

sums = []       #Tableau de valeurs totales à chaque fois

with open('C:\\Python\\scloto6\\index.txt', 'r') as f:
    lines = f.readlines()
    for line in lines:
        array = line.split('\t')
        array_n = list(map(int, array))     #Puisque tableau est un tableau str, convertissez-le en tableau int
        sums.append(sum(array_n))

        for i in array_n:
           appearance_count[i] = appearance_count[i] + 1

#Trier par ordre décroissant en fonction du nombre d'occurrences
sorted_appearance_count = sorted(appearance_count.items(), key=lambda x:x[1], reverse=True)

avg = sum(sums) / len(sums)
print(f"AVG:{avg}")

sigma = np.std(sums)        #écart-type des sommes
sigmalower = avg - sigma
sigmaupper = avg + sigma
print(f"σ:{sigma}({sigmalower}~{sigmaupper})")

for index in [0, 2, 4, 6, 8]:
    while True:
        a = []

        a.append(sorted_appearance_count[index][0])
        a.append(sorted_appearance_count[index + 1][0])

        #Les 4 autres sont aléatoires(En d'autres termes, il n'y a aucune base pour le ramassage)
        while len(a) < 6:
            no = random.randint(10, 32)
            value = sorted_appearance_count[no][0]
            if not value in a:
                a.append(value)

        asum = sum(a)

        if sigmalower <= asum and asum <= sigmaupper:
            #Le total des 6 numéros ramassés est-Adopté dans la gamme de σ à σ
            break

    print(f"{asum}{a}")

La sortie ressemble à ceci.

Résultat d'exécution


AVG:131.93635170603673
σ:28.37024181798044(103.56610988805629~160.30659352401716)
123[6, 38, 22, 26, 11, 20]
128[10, 27, 39, 21, 26, 5]
108[37, 12, 2, 16, 21, 20]
126[24, 15, 39, 35, 5, 8]
129[19, 43, 25, 3, 23, 16]

Épilogue

Puisqu'il est de 200 yens par unité, c'est 1000 yens pour 5 unités, donc je l'ai réglé à 5 unités, mais j'ai l'impression d'avoir lu que 3 unités sont les meilleures pour LOTO 6 quelque part (j'ai oublié la base ...)

Même si vous visualisez les numéros d'apparence 1524 fois, vous ne pouvez voir aucune tendance, de sorte que la méthode de loterie par machine physique peut ne pas avoir de stratégie. Si c'est le cas, cela fait 20 ans, il semble donc que les ancêtres l'aient déjà découvert. Les jours de loterie sont deux fois par mois et le jeudi!

Recommended Posts

Défiez LOTO 6 avec Python sans discipline
Imprimez avec python3 sans interruption
Défi problème 5 avec Python: lambda ... j'ai décidé de copier sans
FizzBuzz en Python3
Grattage avec Python
[Python] Défiez 100 coups! (015 ~ 019)
Statistiques avec python
Grattage avec Python
Python avec Go
[Python] Défiez 100 coups! (030-034)
[Python] Défiez 100 coups! (006-009)
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
[Python] Défiez 100 coups! (000-005)
AES256 avec python
Testé avec Python
[Python] Défiez 100 coups! (010-014)
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
[Python] Défiez 100 coups! (025-029)
journal des défis python ①
Excel avec Python
Micro-ordinateur avec Python
[Python] Défiez 100 coups! (020-024)
Cast avec python
Défiez AtCoder (ABC) 164 avec Python! Un problème ~ C
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Les débutants en Python défient Cpaw CTF Q14 avec le tri à bulles
Grattage en Python (préparation)
Essayez de gratter avec Python.
Essayez de résoudre le livre des défis de programmation avec python3
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Exécutez Python avec VBA
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
1.1 Premiers pas avec Python
Collecter des tweets avec Python
Binarisation avec OpenCV / Python
3. 3. Programmation IA avec Python
[Petite histoire] Synchronisez avec Python sans multi-threading (utilisation limitée)
Méthode Kernel avec Python
Non bloquant avec Python + uWSGI
Grattage avec Python + PhantomJS
Publier des tweets avec python
Conduisez WebDriver avec python
Utiliser mecab avec Python 3