假设我有一个名为 的列表,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)
的随机整数。)k
0 <= k < n