Thông Tin Dự Đoán Kết Quả Xổ Số Trúng Thưởng Bằng Thuật Toán Tính Xổ Số Thủ Đô

Có lẽ từ xổ số hay lottery đã không còn là cụm từ xa lạ đổi với mỗi người chúng ta. Thậm chí dân chơi còn có một câu khá nổi tiếng ví von như sau:

Lô đề cờ bạc muôn đời thịnhHọc hành chăm chỉ vạn kiếp suy

Nghe mà muốn khóc quá chừng, mình làm Đa ta sai ừn vất vả là thế mà vẫn vạn kiếp suy thì tính sao bây giờ. Trong một phút yếu lòng mình đã nghĩ đến việc thử phân tích dữ liệu xổ số miền Bắc từ một trang mạng để xem câu tục ngữ trên có thực sự có hiệu quả không. OK không để mất thời gian của các bạn chúng ta sẽ bắt đầu ngay với một lĩnh vực mới trong khai phá dữ liệu đó chính là tính lô đề. Let go….

Đang xem: Thuật toán tính xổ số thủ đô

Cơ sở lý thuyết

Nói qua một chút cho các bạn nào chưa hiểu về luật chơi xổ số hay nói chính xác hơn là chơi đề áp dụng trên toàn vịnh Bắc Bộ. Kết quả đề của một hôm được tính bằng hai chữ số cuối của giải đặc biệt. Và nếu người chơi đánh trúng thì giải thưởng sẽ là 1 ăn 70. Chỉ một luật chơi đơn giản như vậy mà làm cho rất nhiều người say mê đó các bạn ạ. Mình thì không thích những thứ thuộc về may mắn lắm, nói đúng hơn mình thích những thứ gì có thể tính toán được, có bằng chứng khoa học cụ thể. Chính vì lý do đó nên từ trước đến giờ mình không mấy quan tâm đến việc chơi xổ số (thực ra hồi bé có chơi một lần nhưng bị thua nên không bao giờ chơi nữa :slight_smile:) nhưng tình cờ đọc được một bài viết chia sẻ trên mạng về cách tính toán soi lô đề nên với cái máu của một người thích các con số mình đã quyết định tải thử tập dữ liệu về và phân tích thử. Các bạn có thể tải về tập dữ liệu này tại đây. Thống kê đầy đủ và chi tiết từ năm 2002 đến năm 2017. Sau khi có dữ liệu rồi chúng ta sẽ tiến hành xử lý chúng nhé

*

Chuẩn bị dữ liệu

Dữ liệu được tải về dưới dạng file .docx được lưu thành từng bảng cho từng năm. Các bạn cứ tải hết về theo các link đã cung cấp sẽ thu được một tập dữ liệu như sau:

*

Mở thử một file ra thì sẽ thấy mỗi file sẽ được lưu theo một bảng gồm các cột tương ứng với 12 tháng trong một năm, và các dồng tương ứng với các ngày trong một tháng

*

Tuy nhiên để thuận tiện cho việc lập trình lấy dữ liệu sau này chúng ta sẽ cần tổng hợp lại dữ liệu này để lưu dưới dạng file xls hoặc csv chẳng hạn. Rất đơn giản chúng ta chỉ cần copy lần lượt các bảng tại từng file vào trong một editor như Google Trang tính chẳng hạn. Sau đó chúng ta lưu về thành một file tại local để tiện cho xử lý về sau. Nếu các bạn lười thu thập có thể dùng sẵn file mà mình đã làm tại đây. OK vậy là đã xong bước chuẩn bị dữ liệu giờ chúng ta sẽ tiếp tục sang bước tiếp theo đó là Tiền xử lý dữ liệu

Tiền xử lý dữ liệu

Sau khi đã thu thập được file dữ liệu rồi chúng ta sẽ tiến hành xử lý chúng. Quan sát một lát thấy file dữ liệu của chúng ta được lưu dưới dạng bảng và chúng ta sẽ sử dụng một công cụ nào đó để chuyển chúng về dạng array có thể xử lý được. Chúng ta sẽ sử dụng một thư viện nổi tiếng trong Python đó chính là pandas. Nó chuyên dùng cho việc xử lý các dữ liệu thuộc dạng bảng. Một thư viện khác để xử lý dữ liệu số rất nổi tiếng trong Python đó chính là Numpy Chúng ta tiến hành import các thư viện này vào như sau:

import pandas as pdimport numpy as npTiếp theo chúng ta sẽ load dữ liệu ra bằng lệnh sau:

file = “loto.xls”df = pd.read_excel(file)Dữ liệu được sinh ra dưới dạng DataFrame như sau:

*

Quan sát thấy thư viện pandas đang sử dụng bằng số thực. Chúng ta cần chuyển nó về thành số nguyên

df_matrix = df.as_matrix()df_matrix = np.int_(df_matrix)print df_matrix<-1>Sau khi tiến hành in thử dòng cuối cùng của file dữ liệu thì chúng ta nhận được kết quả như sau:

*

Loại bỏ missing value

Lấy giá trị trung bình của các giá trị còn lại thay vào missing valueGán missing value = 0Sử dụng phương pháp kNN – k Nearest Neighbor tính toán giá trị của missing valueBỏ qua missing value trong tập dữ liệu

def checker(d_arr): tmp = <> for i in d_arr: if i 0: tmp.append(i) else: tmp.append(i % 100) return tmpVà cuối cùng hàm load dữ liệu của chúng ta sẽ như sau:

def read_data(): file = “loto.xls” df = pd.read_excel(file) df_matrix = df.as_matrix() df_matrix = np.int_(df_matrix) df_matrix = return np.array(df_matrix)

Trích xuất dòng và cột

Quan sát dữ liệu của chúng ta cho thấy các hàng sẽ biểu diễn tương ứng với các ngày trong một năm, các cột sẽ biểu diễn tương ứng với các tháng trong một năm. Chúng ta sẽ viết hai hàm để đọc dữ liệu dạng này

def get_rows(data, s_row = 0, e_row = 1): return datadef get_columns(data, s_col = 0, e_col = 12): cols = for d in data> cols = data_concate(cols) return colsVí dụ như lấy dữ liệu của năm đầu tiên sẽ tương ứng với 31 dòng và 12 cột dữ liệu đầu tiên. Chúng ta thực hiện như sau:

data = read_data()print get_rows(data, 0, 31)

*

Chúng ta thấy rằng dữ liệu của chúng ta đang chứa hai chữ số cuối và những giá trị âm tương ứng với các missing value được lưu theo dạng 2d array chúng ta cần chuyển chúng về dạng 1d array và loại bỏ những số âm này đi trước khi xử lý

def data_concate(data): concate = np.concatenate(data) concate = np.array(= 0>) return concateQuay về hàm main chúng ta thay đổi một chút để thấy kết quả

print data_concate(get_rows(data, 0, 31))

*

Và đây chính là toàn bộ các con đề trong năm đầu tiên tức năm 2002. Chúng ta sẽ thử vẽ đồ thị biểu diễn phân phối của các con số này xem sao nhé.

Biểu diễn dữ liệu bằng đồ thị

Chúng ta sẽ biểu diễn dữ liệu bằng đồ thị với hàm sau:

def plot_data(data): counter = Counter(data) labels, values = zip(*counter.items()) indexes = np.arange(len(labels)) width = 0.5 plt.xlabel(“Numbers”) plt.ylabel(“Frequence”) plt.bar(indexes, values, width) plt.xticks(indexes + width * 0.5, labels) plt.show()Với dữ liệu của năm đầu tiên chúng ta hay thử quan sát nhé

*

Nhận xét

Những số đề phần đa xuất hiện khoảng 2 đến 4 lần trong một năm. Cá biệt có những số xuất hiện chỉ một lần hoặc 8 hay 9 lần những rất ít khi xảy ra.

Xem thêm: Top 6 Phần Mềm Quản Lý Bán Hàng Online Miễn Phí 2020, 5 Phần Mềm Quản Lý Bán Hàng Miễn Phí Tốt Nhất

Kể ra thì cũng đúng với lý thuyết xác suất. Nếu chúng ta coi việc quay giải xổ số giống như việc chúng ta đang ném ngẫu nhiên 365 hòn đá (tương ứng với 365 ngày trong năm) vào 100 cái nhà tương ứng với các số từ 0 đến 99 thì trung bình chúng ta sẽ có được giá trị của kì vọng như sau:

E(X)=mn=365100=3.65E(X)=frac{m}{n}=frac{365}{100}=3.65E(X)=nm​=100365​=3.65

Trông thì có vẻ ngẫu nhiên đấy nhưng nhỡ đâu có quy luật gì đó trong đây thì sao. Thử đào tiếp một chút nữa xem sao nhé các bạn, biết đâu làm tìm thêm được một phương pháp tính lô mới.

Xem thêm: Tv360: Ứng Dụng Xem K Miễn Phí Trên Android Tv Miễn Phí, App Xem K+ Miễn Phí Mới Nhất Trên Điện Thoại

Tính toán hàm mục tiêu

Hãy tưởng tượng rằng việc đánh xổ số của ta giống như một bài toán tối ưu tức là làm tăng tối đa giá trị của hàm mục tiêu ở đây tức là tăng tối đa phần thưởng bằng một số phương pháp nào đó. Như đã đưa ra luật chơi ở phần đầu. Chúng ta sẽ xây dựng hàm mục tiêu như sau:

def loto_lost_func(loto_arr, rs = 0, price = 0): total = – price * len(loto_arr) if rs in loto_arr: total = total + price * 70 return totalHàm trên nhận đầu vào gồm các tham số sau:

loto_arr là bảng chứa các con đề bạn đánh trong ngày cần tínhrs là kết quả xổ số (hai chữ số cuổi) của ngày cần tínhprice là số tiền bỏ ra cho mỗi con đề.

Hãy chạy thử hàm trên

Chơi xổ số kiểu gà mờ

Việc cần làm của chúng ta đó là lựa chọn ra được danh sách các con số có thể đem đánh trong một ngày. Tuy nhiên rằng để cho khách quan chúng ta sẽ xét xem nếu áp dụng cùng một cách chơi cho tất cả các ngày trong năm thì chúng ta sẽ được lãi bao nhiều nhé. Đầu tiên đó là lựa chọn ngẫu nhiên

Lựa chọn ngẫu nhiên 5 số

Giả sử bạn lấy ngày sinh của bố mẹ, em gái, em trai và bạn tạo thành một bố số như sau loto_arr = <18, 5, 27, 6, 28> sau đó áp dụng bộ số này cho cả năm 2002 thử xem sao nhé. Trước tiên là load dữ liệu của năm 2002 tương ứng với năm đầu tiên của tập dữ liệu. Hàm load dữ liệu cho từng năm như sau:

def get_data_range(s_year, e_year): data = read_data() data = get_rows(data, s_year * 31 + 1, e_year * 31 – 1) return data_concate(data)# Load data for 2002data_2002 = get_data_range(0, 1)Sau đó chúng ta sẽ tính toán tổng số tiền sẽ đạt được trong năm 2002 nếu như áp dụng bộ số ngẫu nhiên ngày sinh của chúng ta. Hàm tính toán đó như sau

Lựa chọn ngẫu nhiên nhiều số

Khả năng 5 số thì xác suất trung hơi thấp nên chúng ta chấp nhận thương đau quất luôn 20 số một ngày cho chắc cú với hi vọng sẽ được nhiều tiền thưởng hơn. Lôi hết ngày sinh của ông bà bố mẹ cụ kị nội ngoại ra chúng ta được một dãy số như sau:

Thử ngẫu nhiên một con duy nhất

Giờ chúng ta thử chỉ chơi một con duy nhất xem sao. Ví dụ ngày sinh của bố mình chẳng hạn

Nếu chọn ngẫu nhiên thì đánh càng nhiều thì sẽ thua càng nhiều

Đây là cách chơi mà những người chuyên nghiệp gọi là kiểu gà mờ tức là chẳng cần một tý kiến thức nào cả cũng có thể chơi được. Giờ chúng ta thử tìm cách khác xem sao

Chơi xổ số kiểu thống kê

Chúng ta đã thấy rằng cách chơi kiểu gà mờ chỉ gây những thiệt hại to lớn cho chúng ta. Giờ chúng ta sẽ chơi theo một hướng đi khác, đó là sử dụng một số kĩ thuật thống kê vào chơi xổ số

Dựa trên các số đề ra nhiều nhất

Một cách mơ hồ chúng ta có thể tin rằng các số ra nhiều nhất thì có khả năng sẽ đem lại cho chúng ta may mắn hơn. Giờ chúng ta thử viết một hàm lấy ra top 10 số đề của năm 2002

Để máy tính chọn hộ

Thôi thì chẳng tính toán gì nữa cả. Cách tốt nhất là nhờ máy tính chọn hộ, nó chọn số nào mình chơi số đó. Mặc đời trôi luôn. Chúng ta chỉnh lại một chút trong hàm total_lost như sau:

*

Bài học rút ra

Bây giờ bạn đã hiểu tại sao mà Phan Thị Inc nói không với ma túy nhưng lại tập trung hoạt động bảo kê mở sòng bạc chưa. Có lý do cả đó các bạn ạ. Sau bài này mình cảm thấy cần rút ra một số bài học đó là:

Đừng có tìm quy luật cho những thứ ngẫu nhiênMay mắn chỉ đến một vài lần trong đời (thường là rất hiếm) nên đừng hi vọng chúng ta có thể gặp nó hàng ngàyXổ số là lĩnh vực rất có lợi cho nhà đầu tư (công ty xổ số) chứ không bao giờ có lợi cho người chơi nóVì sao nên chơi xổ số. Vì nó được tung hô là ích nước lợi nhà tức là tăng thêm thuế cho đất nước và tăng thu nhập cho nhà đầu tư tức công ty xổ số

*

Xem thêm bài viết thuộc chuyên mục: Thủ thuật

Khuyễn Mãi Hot