La mejor forma que he encontrado para seleccionar cualquier número de registros aleatorios es con OFFSET en la consulta.
Digamos que quiere 6 registros aleatorios, así que tomaré prestada una respuesta anterior y contaré el número total de amigos en la base de datos.
$sql = mysql_query("SELECT COUNT(*) AS total FROM friends WHERE member_id='". $_SESSION['userid'] ."'");
$get_count = mysql_fetch_array($sql); // Fetch the results
$numfriends = $get_count['total']; // We've gotten the total number
Ahora obtendremos los 6 registros aleatorios del total anterior (esperemos que sea> 6),
$query = mysql_query("SELECT * FROM friends WHERE member_id='". $_SESSION['userid'] ."' LIMIT 6 OFFSET " . (rand(0, $numFriends));
while ($rows = mysql_fetch_array($query))
{
/// show your $rows here
}
Es posible que el uso de OFFSET no sea el mejor ni el más eficiente, pero funcionó para mí en grandes bases de datos sin atascarlas.