Lately I've been running into several explanations on how to efficiently get random documents out a Couch database, and so far, the majority of the approaches settle on storing a random value in the document itself, as demonstrated here. This seems like a waste (it adds administrative clutter to the document).
Of course, it's an understandable approach, since couch view functions are required to be idempotent (running the same function with the same input must produce the same output), and at face value, you'd think that generating a random number in the view function would produce different results each time, even with the same input. However, that's not necessarily the case.