Tu pregunta está mal ordenada.
Para hacer cadenas aleatorias puedes hacerte un algoritmo simple, pero si no te quieres currar mucho puedes hacer lo siguiente:
- uniqid(); -> 13 carácteres alfanuméricos (casi únicos, es muy raro que se lleguen a repetir)
- md5($_SERVER['REQUEST_TIME']); -> 32 carácteres hexadecimales (basicamente únicos ya que $_SERVER['REQUEST_TIME'] (que es lo mismo que time() pero más rápido) no se puede repetir.
- sha1($_SERVER['REQUEST_TIME']); -> 40 carácteres hexadecimales (igual que md5).
Estas 3 opciones son suficientemente fiables para producir nombres temporales y únicos.
De todas maneras, no entiendo a que te refieres con que expiren para que no puedan hacer el cuestionario. Si expira significa que puedes volver a hacer el cuestionario.