Số ngẫu nhiên có thực sự ngẫu nhiên ? (Phần 1)
Sự ngẫu nhiên có thực sự tồn tại ? Hay mọi thứ trên đời đều đã được định sẵn ?
Summary
Đã bao giờ bạn thử hỏi, sự ngẫu nhiên có thực sự tồn tại ? Hay mọi thứ trên đời đều đã được chúa trời, Đức Phật hay một thế lực siêu nhiên nào đó định sẵn ?
Đối với một con bạc, họ luôn tự hỏi tại sao đánh tài lại ra xỉu, tại sao mình lại thua. Do nhà cái gian lận hay do mình thực sự đen đủi ?
Đối với người đang yêu, họ hỏi nhau rằng tại sao em lại gặp anh có phải do duyên số hay định mệnh đã sắp đặt cho mình gặp nhau ?
Tuy những câu hỏi ấy nghe có vẻ đời thường nhưng ẩn sau đó là một vấn đề triết học và khoa học sâu sắc: Liệu sự ngẫu nhiên có thật sự tồn tại hay nó chỉ là biểu hiện cho sự thiếu hiểu biết của con người về thế giới xung quanh ?
Trong blog này, mình sẽ nêu ra một số quan điểm cá nhân của mình về vấn đề này. Biết đâu sau bài viết này, mọi người sẽ tự trả lời được các câu hỏi trên
Bạn có thể thắng được nhà cái ?
Bỏ qua những yếu tố như nhà cái gian lận, xử ép để bắt buộc bạn phải thua. Nếu như, kết quả không được thao túng mà phụ thuộc hoàn toàn vào sự ngẫu nhiên thì sao. Vâng, bạn hoàn toàn có thể thắng được nhà cái.
Như ta đã biết, tài xỉu hay bất kỳ trò chơi đỏ đen, gacha, mở hòm nào cũng đều dựa trên một yếu tố đó là tính ngẫu nhiên. Ví dụ, với trò chơi tung đồng xu, xác suất ra mỗi mặt là 50%. Lúc này máy tính chỉ cần “sinh ra một số ngẫu nhiên” và dựa vào số đó để quyết định kết quả. Nếu chẵn thì là mặt úp, lẻ thì là mặt ngửa.
Nhưng có thật sự máy tính làm được điều đó ? Câu là lời là KHÔNG. Máy tính không giống như con người, nó không thể tự sinh ra một số ngẫu nhiên.
Ngẫu nhiên là gì ?
Trước tiên, ta phải hiểu “ngẫu nhiên” thực sự là gì. Ngẫu nhiên được định nghĩa là một kết quả không dựa trên phương pháp hoặc quyết định có ý thức nào
Vậy rõ ràng, ngay từ chính khái niệm này đã khẳng định rằng: Máy tính không thể tự sinh ra số ngẫu nhiên. Bởi vì, máy tính hoạt động dựa trên các câu lệnh, các hàm, quy tắc. Nó nhận thông tin và tạo ra kết quả dựa trên những “công thức” cho trước.
Chỉ có những bộ não có ý thức mới có thể lựa chọn ngẫu nhiên.
Sự ngẫu nhiên trong máy tính
Đứng trước tình huống đó, máy tính buộc phải đưa ra các kết quả ngẫu nhiên một cách không ngẫu nhiên. Chúng có hai cách để thực hiện điều này:
Psueudo-random number generation (PRNG):
Đây là phương pháp phổ biến nhất. Máy tính sẽ sử dụng một thuật toán để tạo ra một chuỗi số mà có vẻ như là ngẫu nhiên, nhưng thực chất là được xác định bởi một giá trị khởi tạo (seed). Nếu bạn sử dụng cùng một giá trị khởi tạo, bạn sẽ nhận được cùng một chuỗi số.
Có rất nhiều thuật toán PRNG khác nhau, đơn giản nhất ta sẽ lấy ví dụ với thuật toán Middle Square do John von Neumann phát minh ra. Thuật toán này hoạt động bằng cách lấy bình phương của một số và sau đó lấy các chữ số ở giữa để tạo ra số mới.
Ban đầu ta phải chọn một số khởi tạo gọi là seed. Ở đây giả sử ta chọn seed = 1701. Các số ngẫu nhiên sẽ được sinh ra như sau:
- 1701 * 1701 = 2891401, lấy các chữ số ở giữa ta được
8914 - 8914 * 8914 = 79492396, lấy các chữ số ở giữa ta được
4923 - 4923 * 4923 = 24235329, lấy các chữ số ở giữa ta được
3532 - 3532 * 3532 = 12476024, lấy các chữ số ở giữa ta được
7602 - …
Sau 4 lần sinh số ta được chuỗi số ngẫu nhiên là 8914, 4923, 3532, 7602. Nếu ta sử dụng cùng một giá trị khởi tạo seed = 1701 thì sẽ luôn nhận được cùng một chuỗi số.
Tức là dù cho ta sử dụng bất kỳ thuật toán PRNG nào, nếu sử dụng cùng một giá trị khởi tạo thì sẽ luôn nhận được cùng một chuỗi số. Điều này có nghĩa là các số ngẫu nhiên được sinh ra không thực sự ngẫu nhiên. Vậy các trang web, trò chơi chống lại điều này bằng cách nào ?
Thông thường seed sẽ được chọn bằng số nano giây tính từ năm 1970 (Unix epoch time). Chính vì điều này việc dự đoán kết quả là cực khó nhưng không phải là không thể.
Vậy nếu vô tình bạn có được source code của nhà cái và biết được thuật toán PRNG mà họ sử dụng thì bạn biết phải làm gì rồi đấy :D.
Thực tế vào năm thế kỉ trước, đã có một nhóm người mua lại được một chiếc máy chơi game. Họ đã phân tích và tìm ra được thuật toán PRNG mà máy sử dụng. Sau đó, họ đã sử dụng chính chiếc máy đó để chơi game và thắng được hàng triệu đô la. Bạn có thể tìm hiểu thêm về câu chuyện này trong cuốn sách “Bringing Down the House” của Ben Mezrich, sau này được chuyển thể thành bộ phim “21”.
True random number generation (TRNG):
Đây là phương pháp sử dụng các hiện tượng vật lý ngẫu nhiên để tạo ra số. Ví dụ, có thể sử dụng tiếng ồn điện tử, sự phân rã hạt nhân, hoặc các hiện tượng tự nhiên khác để tạo ra số ngẫu nhiên. TRNG không phụ thuộc vào thuật toán và không thể tái tạo được.
Tuy TRNG là phương pháp tạo ra số ngẫu nhiên thật sự, nhưng việc ứng dụng nó lại không phổ biến rộng rãi trong các chương trình thông thường vì chi phí, độ trễ và yêu cầu phần cứng đặc biệt. Thay vào đó, các hệ thống cần tính bảo mật cao như mã hóa, ví tiền điện tử, hoặc đánh bạc trực tuyến nghiêm túc thường tích hợp phần cứng TRNG để tránh bị khai thác như với PRNG.
Nhưng ? Thật sự đây đã là sự ngẫu nhiên chưa ?
Vật lý cổ điển: Ngẫu nhiên tương đối
Rời khỏi máy tính, hãy nhìn vào thực tại:
Liệu khi bạn tung một đồng xu thật, hay thả xúc xắc, thì kết quả đó là ngẫu nhiên? Hay nếu chúng ta có đủ thông tin về lực ném, góc nghiêng, không khí, ma sát… thì hoàn toàn có thể tính toán và dự đoán chính xác mặt nào sẽ xuất hiện?
Con quỷ của Laplace
Theo quan điểm của vật lý cố điển, mọi sự vật đều tuân theo các quy định vật lý cụ thể. Chuyển động của vật thể, lực hấp dẫn, động lượng, … tất cả đều có thể mô tả chính xác băng các phương trình toán học.
Vào thế kỷ 18, nhà toán học Pierre-Simon Laplace đã đưa ra một ý tưởng nổi tiếng gọi là “Con quỷ của Laplace”.
“Nếu có một trí tuệ đủ mạnh để biết được vị trí và vận tốc của tất cả các hạt trong vũ trụ tại một thời điểm, thì nó có thể biết được quá khứ và tương lai của toàn bộ vũ trụ.”
Thật vây, giả sử con quỷ này biết được mọi thông tin của vũ trụ tại thời điểm $t$.
Đặt $f(t)$ là trang thái của vũ trụ tại thời điểm $t$, bao gồm vị trí, vận tốc, và các thông số khác của mọi hạt.
Bằng các công thức vật lý, “nó” hoàn toàn có thể tính được trạng thái của vũ trụ tại thời điểm $f(t + 1)$, $f(t + 2)$, … và ngược lại $f(t - 1)$, $f(t - 2)$, …
Như vậy mọi thứ của ngày hôm nay đã được định sẵn từ ngày hôm qua, mọi thứ của ngày hôm qua đã được định sẵn từ ngày hôm kia, và vân vân. Mọi thứ trong cuộc đời ta đều đã được định sẵn từ khi ta sinh ra ? Mọi thứ trong vũ trụ đều đã được định sẵn từ khi xảy ra vụ nổ Big Bang ?
Bản chất của sự ngẫu nhien trong thực tế là do sự thiếu thông tin.
Thật khó chấp nhận nhỉ ? Sự ngẫu nhiên chỉ là ảo tưởng do chúng ta thiếu thông tin về thế giới xung quanh ? Như vậy cuộc đời của chúng ta đã được định sẵn vậy ta còn phải cố gắng đi làm, đi học, phát triển bản thân làm gì nữa vì vốn dĩ “mọi thứ đã được định sẵn” ?
Tự do ý chí có thật sự tồn tại
Quay trở lại với câu hỏi: “nỗ lực còn có ý nghĩa gì nếu mọi thứ đã được định sẵn?”
Đây là một cuộc tranh luận kéo dài hàng thế kỷ giữa chủ nghĩa determinism (định mệnh) và chủ nghĩa tự do ý chí (free will):
- Nếu mọi thứ đã được định sẵn, thì việc bạn đang đọc bài blog này cũng đã được lập trình từ trước.
- Nhưng nếu bạn có quyền lựa chọn, thì điều đó có nghĩa là bạn có thể “làm lệch hướng” số phận bằng chính hành động và quyết định của mình.
Conclusion
Vậy thì, nếu trong máy tính sự ngẫu nhiên chỉ là mô phỏng. Trong vật lý cổ điển, sự ngẫu nhiên chỉ là ảo tưởng do thiếu thông tin thì nơi nào mà sự ngẫu nhiên thực sự tồn tại, không thể thay thế, không thể lẩn tránh ?
Câu trả lời có thể đến từ nơi sâu nhất, nhỏ nhất của vũ trụ - Vật lý lượng tử (quatum physics) ta sẽ bàn bạc tại phần sau.
Lưu ý: Bài viết chỉ là quan điểm cá nhân của mình, không có ý định phủ nhận hay bác bỏ bất kỳ niềm tin tôn giáo nào. Mọi người có thể có những quan điểm khác nhau về sự ngẫu nhiên và định mệnh. Nếu có thiết sót hay nhầm lần não xin hãy góp ý để cải thiện trong tương lai. Happy reading!