Ну просто генерится случайное число и в зависимости от диапазона, куда оно попадает, выдается одно из твоих значений...
Код:
function MyRandom : Integer;
var
R : Double;
begin
R := Random;
If R <= 0.5
Then Result := 1
Else
If (R > 0.5) And (R <= 0.75)
Then Result := 2
Else
If (R > 0.75) And (R <= 0.875)
Then Result := 3
Else Result := 4;
end;
initialization
randomize;
Ну а программу проверки сам напишешь (в цикле генери большое кол-во чисел и считай статистику).