Just do some things with a timer:
(defun c:random ()
(if (not seed)(setq seed 0))
(setq seed (+ (getvar "TDUSRTIMER") seed) seed (+ seed (* seed (+ seed pi) 0.731)) seed (rem seed 1))
)
Just to be sure the result is random enough the variable seed is global.