WOyG~ZtOT)Z
Lưu ý: chương trình này có thể sẽ gặp sự cố với lỗi bộ nhớ trên bất kỳ máy tính thực nào. Để kiểm tra nó, hãy thử thay thế G
bằng một chuỗi ngắn hơn, chẳng hạn như trong mã này, tạo ra các số trung bình khoảng 28000:
pyth -c 'WOy"abcdefghijklm"~ZtOUT)Z'
Mã này lặp, thêm một số ngẫu nhiên từ -1 đến 8 đến Z
, với xác suất 2 ^ -26 thoát khỏi vòng lặp trên mỗi lần lặp lại. Xác suất 2 ^ -26 đạt được bằng cách chọn một phần tử ngẫu nhiên ( O
) của tập hợp tất cả các tập hợp con ( y
) của bảng chữ cái (G
).
Chi tiết kỹ thuật & biện minh:
Xác suất 2 ^ -26 có nguồn gốc từ hai sự kiện:, y
khi được gọi trên các chuỗi, là hàm thiết lập sức mạnh, một cấu trúc danh sách tất cả các tập hợp con của đầu vào. Vì đầu vào, G
dài 26 ký tự, bộ sức mạnh này, yG
có 2 ^ 26 mục. OyG
chọn một yếu tố ngẫu nhiên từ 2 ^ 26 mục đó. Chính xác một trong những mục đó, chuỗi trống, sẽ đánh giá là sai khi được chuyển đếnW
, vòng lặp while. Do đó, có xác suất 2 ^ -26 thoát khỏi vòng lặp mỗi lần.
Trong bất kỳ số chu kỳ vòng lặp K cố định nào, xác suất nhận được số K * 3.5 + m và nhận K * 3.5 - m là bằng nhau, bởi vì mỗi chuỗi bổ sung đạt được tổng số có thể được đảo ngược, -1 -> 8, 0 -> 7, v.v., để đạt được cái khác. Ngoài ra, các số gần với K * 3.5 rõ ràng có nhiều khả năng hơn các số ở xa hơn. Do đó, nếu K> 2000000 / 3.5 = 571428.5 thì xác suất nhận được số trên 1000000 lớn hơn 75%, bởi vì một số kết quả trên số đó có thể được đưa vào tương ứng một-một với tất cả các kết quả bên dưới số và phần trên dưới một nửa, có thể được đưa vào tương ứng một-một với những người dưới 1000000. Xác suất nhận được ít nhất 571429 vòng là (1-2 ^ -26) ^ 571429, không ít hơn (1-2 ^ -26 * 571429), số lần dự kiến rời khỏi vòng lặp trong 571429 lần thử đầu tiên, là 99,1%. Do đó, trên 99,1% thử nghiệm trở lên, có 75% hoặc nhiều hơn cơ hội nhận được ít nhất 1000000, do đó, có nhiều hơn 50% cơ hội nhận được hơn 1000000.
Mã này dựa trên hành vi O
nơi một lỗi vô tình được giới thiệu 3 ngày trước và đã được sửa chữa ngày hôm nay. Nó sẽ hoạt động trên mọi phiên bản của Pyth 3 từ trước ngày 22 tháng 12 hoặc sau ngày hôm nay. Các mã sau đây là tương đương và luôn luôn hoạt động:
WOyG~ZtOUT)Z