Cho phép nói rằng chúng tôi có một số phân phối riêng biệt với số lượng hữu hạn kết quả có thể tạo ra một số ngẫu nhiên từ phân phối này nhanh hơn trong O (logn), trong đó n là số kết quả có thể?Làm thế nào để tạo ra một số ngẫu nhiên từ phân phối rời rạc được chỉ định?
Làm thế nào để làm cho nó trong thời gian O (logn):
- Thực hiện một mảng với xác suất tích lũy (Array [i] = Xác suất mà số ngẫu nhiên sẽ ít hoặc bằng i)
- Tạo số ngẫu nhiên từ phân phối đồng đều (cho phép biểu thị nó bằng k)
- Tìm số i nhỏ nhất sao cho k < Mảng [i]. Nó có thể được thực hiện bằng cách sử dụng tìm kiếm nhị phân.
- tôi là số ngẫu nhiên của chúng tôi.
@Tomek, hãy nhớ trao phần thưởng. – Kos
@Kos: Cảm ơn, tôi không biết rằng tôi phải trao tiền thưởng, tôi nghĩ rằng đây là một điều tự động. –
Một nửa số tiền thưởng được trao tự động cho câu trả lời được đánh giá cao nhất nếu bạn bỏ qua tự mình tự mình trao giải thưởng trong thời gian, AFAICR. – Kos