Вот улучшенная версия вашего кода
range = 100000
v = runif(range)
n = runif(range)
f = sum(sqrt(v^2 + n^2) <= 1)
print(4 * f / range)
Вы должны использовать runif
для получения образцов из униформы вместо sample(...) / range
.
s
не является необходимым, поскольку вы подсчитываете, сколько раз, f
, ваша случайная точка (v,n)
находится внутри круга в этом квадранте, деленная на количество попыток ничьей, что было бы range
в вашем случае.
Вам нужно умножить на 4
, так как f / range
приблизительно соответствует площади в четверть круга юнитов.