Предположим, у меня есть список, называемый elements
, каждый из которых выполняет или не удовлетворяет некоторому логическому свойству p
. Я хочу выбрать один из элементов, который удовлетворяет p
случайным с равномерным распределением. Я не знаю заранее, сколько элементов удовлетворяют этому свойству p
.
Будет ли следующий код:
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)
возвращает случайный int k
с 0 <= k < n
.)