Además de entrar en bucle infinito un par de veces por errores de lógica :p, me divertí un rato haciendo éste script:
Código:
<%
aleatorios = ""
i = 1
ciclos = 1
veces = 4
While i < (veces + 1)
randomize
numero_aleatorio = int(rnd*veces)+1
If i = 1 then
aleatorios = "|" & numero_aleatorio & "|"
i = 1 + 1
Else
if instr(aleatorios, "|" & numero_aleatorio & "|") = 0 then
aleatorios = aleatorios & numero_aleatorio & "|"
i = i + 1
End if
End if
ciclos = ciclos + 1
Wend
aleatorios = Mid(aleatorios,2,len(aleatorios) - 2)
arr_aleatorio = Split(aleatorios, "|")
Response.Write "Tras " & ciclos & " ciclos, se llegó a éste resultado:<br>"
for i = 0 to ubound(arr_aleatorio)
response.write "imagen" & arr_aleatorio(i) & ": <img src=""imagen_" & arr_aleatorio(i) & ".gif""><br>"
Next
%>
Eso si, no es muy recomendable para cantidades grandes. Para 4 elementos aleatorios únicos se necesitan entre 12 y 16 vueltas del while.
Para 10 me dio entre 18 de mínima y 41 de máxima
Para 50 entre 131 y 180
para 1000 entre entre 7000 y 9000 (aprox)
y pra 10.000 me dio más de 120.000! (y éste lo probé sólo una vez porque se demoró más de 45 segundos :p)
Saludos