The Rand() function in SQL seems ideal for the task, but the problem is that if used thus:
SELECT TOP 5 Questions.*, Rand() as ID
FROM Questions
the ID field always has the same number in it (ie: the Rand() was only evaluated once).
I have found an alternative method that seems to ''trick'' the backend into evaluating the expression each time. It involves changing the seed for each record and is easiest to use if there is an AutoInc field in the table:
SELECT TOP 20 Questions.*
FROM Questions
ORDER BY (Rand(Questions.QID))
where QID is an AutoInc field. This does produce a random list quite easily and on my testing the list does seem to be reasonably random.
Note: Using MS Access - Rnd() is the function, not Rand()