Наиболее простым для понимания является метод Монте-Карло. Нужно нарисовать круг на дне квадратной коробочки и хорошенько потрясти внутри неё бисер, чтобы он распределился по дну случайным образом. Площадь вписанного в дно круга связана с площадью квадратного дна через число Пи. Ведь сторона квадрата равна двум радиусам круга. Площадь круга будет равна Пи*R^2, а площадь квадрата - (2*R)^2. Далее нужно пересчитать бисеринки, попавшие только в квадрат, и бисеринки, попавшие ещё и в круг (в квадрат они тоже попали, потому что круг внутри квадрата). Не попасть в квадрат было нельзя. Т.е. вероятность попадания хотя бы в квадрат равна единице. А вот вероятность попадания в круг равна отношению площади круга к площади квадрата. Таким образом отношение числа бисеринок, попавших в круг, к общему числу бисеринок будет таким же, как и отношение площади круга к площади квадрата. А это отношение зависит от Пи. Причём оно не зависит от R, которое сокращается. Отношение, полученное из подсчёта бисеринок, нужно просто умножить на 4 и получится число Пи. И чем больше бисера мы используем, и чем больше будет коробочка, тем более точным будет значение Пи.
Посмотрите на ответ от Мадхавы.
На питоне: https://codepaste.net/mxxf5b (вот только количество получаемых знаков после запятой вы не увеличите, поскольку оно ограничено реализацией дробей в самом Python)