Yo he realizado algo Parecido asi que te doy la idea :
Em mi caso en la tabla preguntas tengo un campo IDPregunta autonumérico, creo mi arreglo para almacenar los id de preguntas que se generan en el aleatorio.
'sino existe el array test lo crea y genera el aleatorio almacenando el arreglo en una variable session, de lo contrario recupera los datos en variables
<%if isarray(session("test"))=false then
dim test(10,1)
sqltxt="SELECT Minimo=Min(IdPregunta),Maximo=max(Idpregunta) FROM Preguntas where idtest="&idtest
sqltxt=sqltxt +" And idCategoria="&idsemana
ra.open sqltxt,cn
Minimo=ra("Minimo")
Maximo=ra("Maximo")
ra.close
for s=1 to 5
Randomize
Do Until Not xesta(Aleatorio)
Aleatorio=Int((maximo * Rnd) + minimo)
Loop
test(s,0)=Aleatorio
test(s,1)=0
next
Function xesta(num)
For p=0 To 5
If test(p,0)=num Then
xesta=True
Exit Function
End If
Next
xesta=False
End Function
session("posicion")=1
posicion=1
session("test")=test
else
test=session("mytest")
posicion=session("posicion")
end if
Luego realizo algo como esto :
'almacena el id de pregunta que ya esta en el arreglo y luego se hace el select
<%idpregunta=test(posicion,0)
sqltxt="select * from preguntas where idpregunta="&idpregunta
ra.open sqltxt,cn
El resto es mostrar los datos.
Espero que haya sido c