Infatti, la cosa si può realizzare con un ciclo tipo:

codice:
Set Rs1 = Server.CreateObject("ADODB.Recordset")
sql1 = "SELECT COUNT(*) FROM locale"
Rs1.open sql1, objConn

dim max
max = RS1(0)

if max=0 then 
response.write("database vuoto!")

else

Set Rs2 = Server.CreateObject("ADODB.Recordset")
sql2="SELECT * FROM locale"
Rs2.Open sql2, objConn

Randomize()
dim k, casual(1000), check, numero

numero=5   'questo è il numero dei record che vuoi pescare a caso!!
cont = 0
check=false

do while not cont>(numero - 1)
rs2.movefirst

casual(cont) = Int(Rnd() * Max) 

' //// routine per evitare doppioni ////////////////////////////////
' (se trova un record già estratto torna su senza incrementare cont)
' //////////////////////////////////////////////////////////////////
	for k=0 to (cont-1)
		if casual(cont)=casual(k) then check=true 
                end if	
	next
' ///////////////////////////////////////////////////////////////////

If Not (Rs2.EOF OR check) Then
Rs2.Move casual(cont)

	ID=RS2("ID")
	foto=RS2("foto")
         'ecc. ecc........................
	
%>
<tr>	
	<td ><%=id %></td>
        <td ><%=foto %></td>
</tr>
<%

cont=cont + 1
      
check=false

end if

	loop
	
%>
</table></center>
<%
end if

Rs1.Close
Set Rs1 = Nothing

Rs2.Close
Set Rs2 = Nothing
adattato, naturalmente, al database usato.

"Numero" è appunto il numero di records da pescare a caso.

Se esistono dei records vuoti bisogna inserire un controllo per evitarli.