Nhiệm vụ của bạn là ứng biến một trình tạo số ngẫu nhiên phần cứng với bất kỳ phần cứng nào bạn đang nằm xung quanh.
Thử thách
Viết chương trình với các thuộc tính sau:
- Nó in một trong hai
0
hoặc1
(và không có gì khác). - Đầu ra phụ thuộc vào một quá trình vật lý chứ không chỉ trạng thái bên trong của máy tính.
- Không có mối quan hệ giữa các đầu ra của các lần chạy tiếp theo (cách nhau một phút).
- Đầu ra là không thể dự đoán với bất kỳ nỗ lực thực tế.
- Xác suất của đầu ra
0
là từ 0,2 đến 0,8. - Nó chạy trong chưa đầy một phút với xác suất khá cao.
Bạn phải giải thích tại sao chương trình của bạn có các thuộc tính này, nếu nó không rõ ràng.
Làm rõ và hạn chế
Những điều sau đây có vẻ như có rất nhiều hạn chế đối với một cuộc thi về sự nổi tiếng, nhưng cuối cùng tất cả là để đảm bảo rằng chương trình vẫn nằm trong tinh thần của câu hỏi, phần nào hoạt động và để tránh các giải pháp phổ biến do quá mức cần thiết nhưng hoàn toàn là khá nhàm chán.
- Thời gian hệ thống không được tính là một quá trình vật lý.
- Bạn có thể sử dụng bất kỳ phần cứng cấp độ người tiêu dùng nào bạn thích từ ổ đĩa nổi 8 inch cho đến thiết bị phóng tên lửa USB đến tai nghe - trừ khi nó được dùng để tạo số ngẫu nhiên. Một phần cứng thuộc cấp độ người tiêu dùng, nếu nó được sản xuất hàng loạt và có giá dưới 1000 $ / € / £, vì vậy bạn không thể sử dụng kính viễn vọng vô tuyến, CERN, MRI hoặc máy dò hạt chế tạo tại nhà của bạn.
- Bạn chỉ có thể đưa ra các giả định cơ bản nhất về trạng thái và căn chỉnh của phần cứng như được bật (nếu nó có công tắc nguồn) và được cài đặt đúng chức năng. Ví dụ, bạn có thể giả sử ổ đĩa CD thường có khả năng đọc đĩa và không bị kẹt, nhưng bạn không thể cho rằng nó là mở hoặc đóng hoặc để chứa đĩa. Trong một ví dụ khác, bạn không thể giả sử hai phần cứng được căn chỉnh để cho phép tương tác đặc biệt, nhưng bạn có thể cho rằng chúng ở trong cùng một phòng.
- Bạn có thể để phần cứng ở bất kỳ trạng thái nào bạn thích, trừ khi bạn phá vỡ nó.
- Bạn có thể và phải cho rằng phần cứng ở trong môi trường tự nhiên, nhưng không có gì hơn thế. Ví dụ, bạn có thể giả định rằng phần cứng không được đặt trong một bể chứa khí heli lỏng cũng như trong một căn phòng cực kỳ cách âm và sáng cũng như trong không gian. Tuy nhiên, bạn không thể cho rằng bất kỳ nguồn âm thanh và ánh sáng nào có mặt ngoại trừ những nguồn chỉ có thể tránh được với những nỗ lực triệt để.
- Chương trình của bạn phải chạy trên một máy tính để bàn tiêu chuẩn với hệ điều hành không bí truyền mà bạn chọn. Bạn có thể sử dụng bất kỳ phần mềm nào không được thiết kế riêng để tạo số ngẫu nhiên.
- Bạn không thể giả sử truy cập Internet.
- Bạn không thể cho rằng con người có mặt cũng không vắng mặt, nhưng bạn có thể cho rằng không ai cố tình can thiệp vào chương trình của bạn, ví dụ, bằng cách dừng quạt thủ công hoặc chạy chương trình không làm gì ngoài việc tắt micrô thường xuyên nhất có thể.
- Bạn chỉ có thể đưa ra các giả định cơ bản nhất về cài đặt phần mềm. Ví dụ: bạn có thể giả sử trình điều khiển được cài đặt và kích hoạt nhưng bạn phải chuẩn bị cho âm thanh bị tắt.
- Bạn có thể để các cài đặt phần mềm ở bất kỳ trạng thái nào bạn muốn.
Thêm
Một tiền thưởng đặc biệt đã được trao cho một giải pháp đặc biệt ngắn. Điều này đúng hơn là theo số lượng hướng dẫn và tương tự như bằng ký tự. Những người chiến thắng là (gắn theo tiêu chí của tôi):
- Câu trả lời này của Franki.
- Câu trả lời này của Tejas Kale.
Tôi chỉ có thể trao một câu trả lời và câu trả lời của Tejas Kale đã giành được rất nhiều.