The usual approach would be to fill an adjacent column with =RAND(),
sort both columns by the random column, and read off the first three
values from the first column.
If sorting is undesirable, you could avoid that step with the following
array formula, to be array entered (Ctrl-Shift-Enter) with three rows of
a column selected
=INDEX(A1:A40,MATCH(LARGE(B1:B40,{1;2;3}),B1:B40,0))
The formula assumes that B1:B40 contains =RAND() to return random
selections from A1:A40. When you first enter the formula it will give
#N/A values, but will start working on the next recalculation (and will
return a new selection every recalc after that).
Jerry
Excel MVP