Create a LISP program that generates random LISP programs.
No two runs of the program should generate the same code.
Generated code must be VALID LISP and should (given random input) return a value without throwing errors in such a way that the same input always returns the same output.
No two runs of the program should generate the same code.
That seems difficult if not impossible because seeds are of fixed length (unless you want to use some bignum, for example keyed on time) and thus there is a finite amount of possible programs to generate. If you relax the requirement as a program being seeded by a bigint returning a deterministic program output.
You also need to define better what 'random input' represents (depends on Lisp dialect and how input is given and its type/format).
Leaving that aside, it seems rather trivial to make a random code generator, however there's a simpler solution: define a VM which cannot access anything external (and thus no source of randomness), interpret bignum input as a binary/compiled program written for that VM, throw some error handler (or just make VM incapable of crashing) around it.