program p;
const dots = 10000000;
var i, cnt: longint;
x, y, r: real;
begin
randomize;
for i := 1 to dots do begin
x := random * 3 - 1.5;
y := random * 3 - 1.5;
if (sqr(x) + sqr(y) <= 2.25) and (sqr(x - 2) + sqr(y) >= 2.25) then
inc(cnt)
end;
write(18 * cnt / dots)
end.
Берём половину фигуры (в данном случае, правую).
Помещаем её в квадрат 3 * 3 (со сдвигом центра круга в начало координат - для удобства).
Раскидываем по квадрату случайные точки (в данном случае, 10 миллионов точек).
Считаем, сколько всего точек попало в фигуру.
Умножаем отношение попавших точек к общему кол-ву точек на двойную (половина фигуры) площадь квадрата.
P.S. Код проверен в компиляторе FreePascal:
https://onlinegdb.com/C1ZVyoTWb . В других диалектах Pascal название типа "длинные целые числа" (необходимого для столь большого кол-ва итераций) может быть иным.
P.P.S. И да, я знаю, что в коде методологическая ошибка, вызванная особенностями ГСЧ в Pascal, но для учебной задачи, показывающей понимание метода Монте-Карло, сойдёт.