Choose random array element satisfying certain property
问题 Suppose I have a list, called elements , each of which does or does not satisfy some boolean property p . I want to choose one of the elements that satisfies p by random with uniform distribution. I do not know ahead of time how many items satisfy this property p . Will the following code do this?: 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