La función Random(N) te devuelve un número aleatorio entr 0 y N-1. Usa esta función para obtener aleatoriamente un índice de tu arreglo donde N sería el mayor índice del arreglo.
Los números obtenidos los vas guardando en otro arreglo.
Sobre este otro arreglo usas las funciones MinIntValue y MaxIntValue para determnar el mínimo y el máximo.
Si los elementos del arreglo no son números enteros podrías entonces almacenar los números seleccionados en un objeto TList y usar su método Sort para ordenar los elementos de manera que el primero y último sean el menor y el mayor.
O bien, conforme vas seleccionando aleatoriamente los números llevas cuenta del mínimo y máximo comparándolos con el último obtenido y reemplazándolos de ser necesario:
Código Delphi
[-]
Randomize;
for I := 1 to 50 do
begin
Indice := Random(N);
Seleccionados[i] := Arreglo[Indice];
if Arreglo[Indice] < Minimo then
Minimo := Arreglo[Indice];
if Arreglo[Indice] > Maximo then
Maximo := Arreglo[Indice];
end;
Nota la llamada a Randomize antes del ciclo. Randomize es necesario para obtener una secuencia aleatoria distinta. En caso contrario obtendrías siempre la misma selección.
// Saludos