Модули «random» и «string». Метод «Монте-Карло»
Метод «Монте-Карло» и «Bogosort»
Как называют метод Монте-Карло?
Ответ: методом статистических испытаний
Что необходимо определить при расчете площади заданной плоской фигуры методом Монте-Карло?
Ответ: площадь прямоугольника или квадрата, содержащего заданную фигуру
Что необходимо определить при расчете площади круга методом Монте-Карло?
Ответ: площадь квадрата, в который вписан заданный круг
Что необходимо определить при расчете площади эллипса методом Монте-Карло?
Ответ: площадь прямоугольника, в который вписан данный эллипс
Напишите программу, которая при помощи метода Монте-Карло вычисляет площадь фигуры, задаваемой с помощью системы неравенств.
n = 10**6 # количество испытаний k = 0 s_0 = 16 for _ in range(n): x = random.uniform(- 2, 2) y = random.uniform(- 2, 2) if x**3 + y**4 + 2 >= 0 and 3*x + y**2 <= 2: k += 1 print((k / n) * s_0)
Напишите программу, которая при помощи метода Монте-Карло определяет приближённое значение числа π.
import random n = 10**6 # количество испытаний k = 0 s_0 = 4 for _ in range(n): x = random.uniform(- 1, 1) y = random.uniform(- 1, 1) if x**2 + y**2 <= 1: k += 1 print((k / n) * s_0)
Болотная сортировка (Bogosort) — неэффективный алгоритм сортировки, используемый только в образовательных целях и противопоставляемый другим, более реалистичным алгоритмам.
Принцип работы алгоритма прост, как плесень. Перетряхиваем список случайным образом до тех пор пока он внезапно не отсортируется. Процесс может счастливо завершиться сразу, а может длиться до тепловой смерти Вселенной. Это уж как повезёт.
Для реализации алгоритма болотной сортировки будем использовать функцию shuffle(), которая случайным образом перемешивает содержимое списка.
import random def is_sort(nums): # отсортирован ли список? for i in range(len(nums) - 1): if nums[i] > nums[i + 1]: return False return True def bogosort(nums): # реализация алгоритма болотной сортировки while not is_sort(nums): random.shuffle(nums) return nums numbers = list(range(10)) random.shuffle(numbers) # перемешиваем начальный список print(numbers) # выводим начальный список sorted_numbers = bogosort(numbers) print(sorted_numbers) # выводим отсортированный список