Tôi có một danh sách 100.000 đối tượng. Mỗi phần tử danh sách đều có "trọng số" được liên kết với phần tử tích cực từ 1 đến N.Chọn ngẫu nhiên một phần tử từ danh sách có trọng số
Cách hiệu quả nhất để chọn phần tử ngẫu nhiên trong danh sách là gì? Tôi muốn hành vi mà việc phân phối các phần tử được chọn ngẫu nhiên của tôi giống như phân bố trọng số trong danh sách.
Ví dụ: nếu tôi có danh sách L = {1,1,2,5}, tôi muốn phần tử thứ 4 được chọn 5/9thời gian, tính trung bình.
Giả sử chèn và xóa là phổ biến trong danh sách này, vì vậy bất kỳ phương pháp nào sử dụng "bảng tích phân" sẽ cần được cập nhật thường xuyên - hy vọng có giải pháp với thời gian chạy O (1) và O (1).
có thể lặp lại http://stackoverflow.com/questions/2140787/select-random-k-elements-from-a-list-whose- các phần tử có trọng số – user470379
@ user470379 Điều này khác với trọng số là 1, 2, ..., N. – marcog
@ user470379, tôi tin rằng yêu cầu hỗ trợ chèn và xóa sẽ phân biệt nó. – jonderry