CGI m a is an instance of MonadIO if m is, so 

import Control.Monad.Trans

cgiTMain = do
   gen <- liftIO getStdGen
   ...

should work.