Giả sử tôi có một danh sách, được gọi là elements
, mỗi phần tử có hoặc không thỏa mãn một số thuộc tính boolean p
. Tôi muốn chọn một trong các yếu tố thỏa mãn p
một cách ngẫu nhiên với phân bố đồng đều. Tôi không biết trước bao nhiêu mặt hàng thỏa mãn tài sản này p
.Chọn phần tử mảng ngẫu nhiên thỏa mãn thuộc tính nhất định
đoạn mã sau sẽ làm được điều này ?:
pickRandElement(elements, p)
randElement = null
count = 0
foreach element in elements
if (p(element))
count = count + 1
if (randInt(count) == 0)
randElement = element
return randElement
(randInt(n)
lợi nhuận một ngẫu nhiên int k
với 0 <= k < n
.)
Tôi đã có thể nghĩ "bởi ngẫu nhiên" và "với phân phối bình đẳng" là loại trừ lẫn nhau, tôi thiếu gì? –
@Binary: anh ta đơn giản có nghĩa là nó phải là một số ngẫu nhiên hợp lý. Tất cả các yếu tố thỏa mãn p phải có cơ hội bình đẳng được chọn ngẫu nhiên mỗi lần. Nếu điều này là đúng, thì chúng sẽ được vẽ với sự phân bố bằng nhau đủ thời gian. – JoeCool
Các bản phân phối ngẫu nhiên có thể có tất cả các loại hình dạng có thể được đặt trọng số theo một nhóm các phần tử khác. Tại đây, Phao-lô hỏi về một sự phân bố đồng đều (hoặc thống nhất) trong đó mỗi phần tử có cùng xác suất được chọn. –