Một số chap nói như sau:
Tất cả những ai cố gắng tạo ra các số ngẫu nhiên bằng các phương tiện xác định, tất nhiên, sống trong tình trạng tội lỗi.
Điều đó luôn có nghĩa là bạn không thể tạo ra các số ngẫu nhiên thực sự chỉ bằng một máy tính. Và ông nói rằng khi máy tính có kích thước tương đương với một bộ vi xử lý Intel 8080 (~ 6000 van). Máy tính đã trở nên phức tạp hơn và tôi tin rằng tuyên bố của von Von Neumann có thể không còn đúng nữa. Xem xét rằng một thuật toán chỉ thực hiện phần mềm là không thể. Họ chạy trên phần cứng vật lý. Các bộ tạo số ngẫu nhiên thực sự và các nguồn entropy của chúng cũng được làm bằng phần cứng.
Đoạn Java này được đặt vào một vòng lặp:
file.writeByte((byte) (System.nanoTime() & 0xff));
có thể tạo một tệp dữ liệu mà tôi đã thể hiện dưới dạng hình ảnh:
Bạn có thể thấy cấu trúc, nhưng với rất nhiều sự ngẫu nhiên là tốt. Điều đáng quan tâm là tệp PNG này có kích thước 232KB, nhưng chứa 250.000 pixel tỷ lệ xám. Mức nén PNG là tối đa. Đó chỉ là tỷ lệ nén 7%, tức là. khá không nén được. Điều thú vị là tập tin này là duy nhất. Mỗi thế hệ của tệp này là một mẫu hơi khác nhau và có độ nén ~ 7% tương tự. Tôi nhấn mạnh điều này vì nó quan trọng đối với lập luận của tôi. Đó là entropy ~ 7 bit / byte. Điều đó sẽ giảm tất nhiên khi sử dụng thuật toán nén mạnh hơn. Nhưng không giảm xuống bất cứ thứ gì gần 0 bit / byte. Một ấn tượng tốt hơn có thể có được bằng cách chụp ảnh trên và thay thế bản đồ màu của nó cho ngẫu nhiên: -
Hầu hết các cấu trúc (ở nửa trên) biến mất vì nó chỉ là chuỗi các giá trị tương tự nhưng khác biệt nhỏ. Đây có phải là một nguồn entropy thực sự được tạo ra chỉ bằng cách thực hiện một chương trình Java trên một hệ điều hành đa lấy? Không phải là một trình tạo số ngẫu nhiên phân phối đồng đều, nhưng nguồn entropy cho một? Một nguồn entropy được xây dựng bằng phần mềm chạy trên phần cứng vật lý chỉ là PC.
Bổ sung
Để xác nhận rằng mọi hình ảnh đều tạo ra entropy mới mà không có mẫu cố định chung cho tất cả, 10 hình ảnh liên tiếp đã được tạo. Chúng sau đó được nối và nén với trình lưu trữ mạnh nhất mà tôi có thể biên dịch (paq8px). Quá trình này sẽ loại bỏ tất cả các dữ liệu phổ biến, bao gồm cả tương quan tự động chỉ để lại các thay đổi / entropy.
Tệp được nối được nén tới ~ 66%, dẫn đến tốc độ entropy ~ 5,3 bit / byte hoặc 10,5Mbit / hình ảnh. Một số lượng đáng ngạc nhiên của entropy
Bổ sung 2
Đã có ý kiến tiêu cực rằng entropy của tôi bằng phương pháp thử nghiệm nén là thiếu sót, chỉ đưa ra một ước tính ràng buộc trên lỏng lẻo. Vì vậy, bây giờ tôi đã chạy tệp được nối bằng thử nghiệm đánh giá entropy mật mã chính thức của NIST, SP800-90B_EntropyAssessment . Điều này cũng tốt như đối với phép đo entropy không IID. Đây là báo cáo (xin lỗi câu hỏi này đang kéo dài, nhưng vấn đề rất phức tạp): -
Running non-IID tests...
Entropic statistic estimates:
Most Common Value Estimate = 7.88411
Collision Test Estimate = 6.44961
Markov Test Estimate = 5.61735
Compression Test Estimate = 6.65691
t-Tuple Test Estimate = 7.40114
Longest Reapeated Substring Test Estimate = 8.00305
Predictor estimates:
Multi Most Common in Window (MultiMCW) Test: 100% complete
Correct: 3816
P_avg (global): 0.00397508
P_run (local): 0.00216675
Multi Most Common in Window (Multi MCW) Test = 7.9748
Lag
Test: 100% complete
Correct: 3974
P_avg (global): 0.00413607
P_run (local): 0.00216675
Lag Prediction Test = 7.91752
MultiMMC Test: 100% complete
Correct: 3913
P_avg (global): 0.00407383
P_run (local): 0.00216675
Multi Markov Model with Counting (MultiMMC) Prediction Test = 7.9394
LZ78Y Test: 99% complete
Correct: 3866
P_avg (global): 0.00402593
P_run (local): 0.00216675
LZ78Y Prediction Test = 7.95646
Min Entropy: 5.61735
Kết quả là NIST tin rằng tôi đã tạo ra 5,6 bit / byte entropy. Ước tính nén DIY của tôi đặt mức này ở mức 5,3 bit / byte, bảo thủ hơn một chút.
-> Bằng chứng dường như ủng hộ quan niệm rằng một máy tính chỉ chạy phần mềm có thể tạo ra entropy thực sự. Và rằng von Neumann đã sai (nhưng có lẽ đúng với thời gian của ông).
Tôi cung cấp các tài liệu tham khảo sau có thể hỗ trợ cho yêu cầu của tôi: -
Có bất kỳ mô hình ngẫu nhiên nào về tính không xác định trong tỷ lệ thực hiện chương trình không?
Phân tích WCET của các hệ thống thời gian thực cứng xác suất
Có một thuật toán phần mềm có thể tạo ra một mô hình hỗn loạn không xác định? và sự liên quan của hiệu ứng hỗn loạn.
Song song với nguyên lý bất định entropic lượng tử
Mục blog của Mitchsey Shipilёv liên quan đến hành vi hỗn loạn của nanoTime (). Âm mưu phân tán của anh ta không giống với tôi.
System.nanoTime()
.