На первый:
Код:
begin
Randomize; //Датчик генерции для большей уверенности
repeat //Цикл
i:=random(10);
until i<>k; //Если полученное число не равно прошлому
k:=i;
Edit1.Text:=IntToStr(i);
end;
На второй:
Если я правильно тебя понял, то просто замени Random RandomRange(10, 17)
P.S. Переменные лучше указывай вне процедуре, функции.