Evaluates one (and only one) of its args, which one is chosen at random
(defmacro whichever (&rest possibilities) "Evaluates one (and only one) of its args, which one is chosen at random" `(ecase (random ,(length possibilities)) ,@(loop for poss in possibilities for x from 0 collect (list x poss))))Source Context