Метод обчислення заснований на наступній ідеї:
- Коло з одиничним радіусом вписаний в квадрат зі стороною два.
- Формуємо координати випадкової точки (кидаємо в заданий квадрат піщинку, камінчик.). Цей випадковий «кидок» і ріднить метод зі столицею азартних ігор, де все також побудовано на випадковості.
- Точка може потрапити в коло чи ні (умова попадання: x 2 + y 2 <= 1)
- Підраховуємо кількість влучень Np при досить великій кількості кидків N.
- Якщо точки випадкові, то ставлення потрапили точок до загальної кількості спроб дорівнює відношенню площ кола і квадрата. Np / N = Sкр / S кв = πR 2 / (2R) 2
- Число π = 4 · Np / N
Програма на «чистому» Pascal виглядає наступним чином:
Точність обчислення залежить від кількості спроб (числа n).
обчислення числа pi для різного числа спроб
Щоб реалізувати візуальну частину в Lazarus необхідно випадкові декартові координати перетворювати в екранні, так само, як і в статті: Побудова графіка функції в Lasarus. Додаток включає в себе компонент TImage для побудови зображення, поле введення, кнопку, і кілька написів:
Випадкова точка з координатами x, y (речові числа в діапазоні (-1; 1) переводяться в екранні координати:
xd: = round (x0 + x * r);
yd: = round (y0 + y * r);
де r - довжина одиничного відрізка в пікселях.
Зафарбовування точки здійснюється за допомогою методу: Form1.image1.Canvas.Pixels [xd, yd]: = clBlue;
1000 випадкових точок.10 000 випадкових точок. Точність обчислення вище.
100 000 точок. Поле практично всі закрашено.
Як легко побачити точність досягається тільки при досить великій кількості кидків. Також точність визначається якістю генератора випадкових чисел.