Các phân phối Pareto là một phân bố xác suất mà đi lên rất nhiều trong tự nhiên. Nó có rất nhiều tính chất đặc biệt, chẳng hạn như một ý nghĩa vô hạn. Trong thử thách này, bạn sẽ xuất ra một số được lấy mẫu từ phân phối này.
Phân phối Pareto được xác định là lớn hơn hoặc bằng x
với xác suất 1/x
, cho tất cả x
lớn hơn hoặc bằng 1.
Do đó, một số được lấy mẫu từ phân phối này lớn hơn hoặc bằng 1 với xác suất 1, lớn hơn hoặc bằng 2 với xác suất chính xác là 1/2, lớn hơn hoặc bằng 3 với xác suất chính xác là 1/3, lớn hơn hoặc bằng 11.4 với xác suất chính xác là 1 / 11.4, v.v.
Vì bạn sẽ lấy mẫu phân phối này, chương trình hoặc chức năng của bạn sẽ không có đầu vào và xuất ra một số ngẫu nhiên, với các xác suất ở trên. Tuy nhiên, nếu chương trình của bạn không hoàn toàn khớp với các xác suất trên do ấn tượng dấu phẩy động thì không sao. Xem phần dưới cùng của thử thách để biết thêm chi tiết.
(Chính xác, đây được gọi là Phân phối Pareto với alpha 1 và giới hạn dưới 1)
Dưới đây là 10 ví dụ rút ra từ bản phân phối này:
1.1540029602790338
52.86156818209856
3.003306506971116
1.4875532217142287
1.3604286212876546
57.5263129600285
1.3139866916055676
20.25125817471419
2.8105749663695208
1.1528212409680156
Lưu ý rằng 5 trong số chúng dưới 2 và 5 trên 2. Vì đây là kết quả trung bình, tất nhiên nó có thể cao hơn hoặc thấp hơn.
Câu trả lời của bạn chỉ cần chính xác đến giới hạn của loại dấu phẩy động, loại số thực hoặc bất cứ thứ gì bạn sử dụng, nhưng bạn phải có thể biểu thị các số ít nhất 3 chữ số thập phân chính xác và đại diện cho các số lên tới 1.000.000 . Nếu bạn không chắc chắn liệu có gì đó ổn không, vui lòng hỏi.
Đây là mã golf.
Chi tiết về sự thiếu chính xác:
Đối với mỗi phạm vi
[a, b]
, ở đâu1 <= a < b
, xác suất lý tưởng mà mẫu sẽ nằm trong phạm vi đó là1/a - 1/b
. Xác suất mà chương trình của bạn tạo ra một số trong phạm vi đó phải có0.001
của1/a - 1/b
. NếuX
là đầu ra của chương trình của bạn, nó được yêu cầu đó|P(a <= X <= b) - (1/a - 1/b)| < 0.001
.Lưu ý rằng bằng cách áp dụng quy tắc trên với
a=1
vàb
đủ lớn, đó là trường hợp chương trình của bạn phải xuất ra một số lớn hơn hoặc bằng 1 với ít nhất xác suất 0,999. Thời gian còn lại nó có thể bị sập, đầu raInfinity
hoặc làm bất cứ điều gì khác.
Tôi khá chắc chắn rằng tài liệu đệ trình hiện có của hình thức 1/1-x
hay 1/x
, nơi x
là một float ngẫu nhiên trong [0, 1)
hay (0, 1)
hay [0, 1]
, tất cả các đáp ứng yêu cầu này.