Решаем задачи Python - страница 3

Шрифт
Интервал


Пример кода на Python:

```python

import random

def monte_carlo_circle_area(num_points):

points_inside_circle = 0

total_points = num_points

for _ in range(num_points):

x = random.uniform(-1, 1)

y = random.uniform(-1, 1)

distance = x**2 + y**2

if distance <= 1:

points_inside_circle += 1

circle_area_estimate = points_inside_circle / total_points * 4

return circle_area_estimate

# Пример использования

num_points = 1000000

estimated_area = monte_carlo_circle_area(num_points)

print(f"Приближенная площадь круга с использованием {num_points} точек: {estimated_area}")

```

В этом примере мы используем тот же метод Монте-Карло, чтобы оценить площадь круга. В результате мы получим приближенное значение площади круга, используя случайно сгенерированные точки внутри квадрата, описывающего этот круг.

Пояснения к каждой части кода:

1. `import random`: Эта строка импортирует модуль `random`, который мы будем использовать для генерации случайных чисел.

2. `def monte_carlo_circle_area(num_points)`: Это определение функции `monte_carlo_circle_area`, которая принимает один аргумент `num_points`, представляющий количество случайных точек, которые мы сгенерируем.

3. `points_inside_circle = 0`: Эта переменная будет использоваться для отслеживания количества точек, попавших внутрь круга.

4. `total_points = num_points`: Эта переменная хранит общее количество сгенерированных точек.

5. `for _ in range(num_points):`: Этот цикл генерирует `num_points` случайных точек внутри квадрата.

6. `x = random.uniform(-1, 1)` и `y = random.uniform(-1, 1)`: Эти строки генерируют случайные координаты `x` и `y` для каждой точки в диапазоне от -1 до 1, что соответствует координатам квадрата.

7. `distance = x**2 + y**2`: Это вычисляет квадрат расстояния от начала координат до сгенерированной точки.

8. `if distance <= 1:`: Этот оператор проверяет, попадает ли точка внутрь круга, используя тот факт, что расстояние от начала координат до точки меньше или равно квадрату радиуса круга (который равен 1).

9. `points_inside_circle += 1`: Если точка попадает внутрь круга, увеличиваем счетчик точек внутри круга.

10. `circle_area_estimate = points_inside_circle / total_points * 4`: Эта строка оценивает значение площади круга, умножая отношение точек внутри круга к общему числу точек на 4. Таким образом, мы получаем оценку площади круга, используя формулу для площади круга πr^2, где r = 1.