МУНИЦИПАЛЬНОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ОБРАЗОВАНИЯ
«ЦЕНТР ДЕТСКОГО ТЕХНИЧЕСКОГО ТВОРЧЕСТВА»
Методическая разработка
«Библиотека Random на языке
программирования Python»
к дополнительной общеобразовательной
общеразвивающей программе
технической направленности
«Программирование на Python»
Возраст детей: 10-17 лет
Автор: Костычев Вадим Александрович
г. Заречный Пензенской области
2023 г.
В ходе изучения программирования на основе языка Python большую роль играет разработка проектов. Они позволяют отработать как навыки программирования, вспомнить работу различных функций, команд, развить навыки построения алгоритмов.
Целью данной разработки является повышение интереса учащихся к техническому творчеству посредством работы над проектом на языке Python.
Данная методическая разработка используется как обучающий пример для работы по дополнительной общеобразовательной общеразвивающей программе технической направленности «Лаборатория робототехники». С их помощью учащиеся смогут применить теоретические знания на практике, построив сложные алгоритмы для решения различных задач.
В данной методической разработке будет рассмотрена библиотека Random языка программирования Python, её функции и решение задач решением с использованием данной библиотеки.
Библиотека Random является стандартной библиотекой в Python и предоставляет различные функции для генерации случайных чисел и последовательностей. Эта библиотека часто используется в программировании для создания случайных данных, тестирования, алгоритмов и других приложений, где требуется случайное или непредсказуемое поведение.
Для использования библиотеки Random необходимо импортировать ее в свою программу, используя следующую строку кода:
import random
После этого можно использовать различные функции, предоставляемые этой библиотекой.
1. Функция random()
Функция random() возвращает случайное число от 0.0 до 1.0. Это число является псевдослучайным и получается из псевдослучайной последовательности. Пример использования:
import random
print(random.random()) # Вывод: 0.4536547298900444
2. Функция randint(a, b)
Функция randint(a, b) возвращает случайное целое число из диапазона от a до b включительно. Пример использования:
import random
print(random.randint(1, 10)) # Вывод: случайное целое число от 1 до 10, например, 8
3. Функция choice(seq)
Функция choice(seq) возвращает случайный элемент из последовательности seq. Пример использования:
import random
colors = ['red', 'green', 'blue']
print(random.choice(colors)) # Вывод: случайный цвет из списка colors, например, 'green'
4. Функция shuffle(seq)
Функция shuffle(seq) перемешивает последовательность seq в случайном порядке. Пример использования:
import random
numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)
print(numbers) # Вывод: [4, 2, 1, 5, 3] (порядок элементов изменится при каждом запуске)
5. Функция sample(seq, k)
Функция sample(seq, k) возвращает список из k случайных элементов последовательности seq без повторений. Пример использования:
import random
numbers = [1, 2, 3, 4, 5]
print(random.sample(numbers, 3)) # Вывод: случайно выбранные 3 числа из списка numbers, например, [4, 1, 3]
6. Работа с seed
Функция seed(seed) инициализирует генератор случайных чисел. При использовании одного и того же значения seed, генератор будет генерировать те же самые случайные числа. Это может быть полезно для воспроизводимости результатов. Пример использования:
import random
random.seed(42)
print(random.random()) # Вывод: 0.6394267984578837
random.seed(42)
print(random.random()) # Вывод: 0.6394267984578837 (тот же самый результат, так как seed одинаковый)
Это основные функции, предоставляемые библиотекой Random в Python. Они могут быть использованы для генерации случайных чисел, выбора случайных элементов, перестановки списка и других задач, связанных с случайными данными.
Задача 1. Бросок монеты
Создайте функцию, которая будет моделировать случайный бросок монеты и возвращать результат "Орел" или "Решка".
Выходные данные:
Орел
Листинг программы:
import random
def coin_toss():
result = random.choice(["Орел", "Решка"])
return result
print(coin_toss())
Задача 2. Генерация координат
Создайте функцию, которая будет генерировать случайные координаты (x, y) в заданном диапазоне.
Выходные данные:
(4.259142999412383, 1.4030643046547802)
Листинг программы:
import random
def generate_random_coordinates(min_x, max_x, min_y, max_y):
x = random.uniform(min_x, max_x)
y = random.uniform(min_y, max_y)
return (x, y)
min_x, max_x = -10, 10
min_y, max_y = -5, 5
print(generate_random_coordinates(min_x, max_x, min_y, max_y))
Задача 3. Перемешивание нескольких списков
Создайте функцию, которая будет случайным образом перемешивать элементы нескольких списков одновременно с помощью функции random.shuffle(). Для этого объедините списки в один и затем перемешайте его.
Выходные данные:
[(3, 1, 2), ('c', 'a', 'b'), (True, True, False)]
Листинг программы:
import random
def shuffle_multiple_lists(*lists):
combined_list = list(zip(*lists))
random.shuffle(combined_list)
shuffled_lists = zip(*combined_list)
return shuffled_lists
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = [True, False, True]
print(list(shuffle_multiple_lists(list1, list2, list3)))
Задача 4. Случайная дата
Создайте функцию, которая генерирует случайную дату в заданном диапазоне.
Выходные данные:
22-11-2022
Листинг программы:
import random
from datetime import datetime, timedelta
def random_date(start_date, end_date):
start = datetime.strptime(start_date, "%d-%m-%Y")
end = datetime.strptime(end_date, "%d-%m-%Y")
diff = (end - start).days
random_days = random.randint(0, diff)
random_date = start + timedelta(days=random_days)
return random_date.strftime("%d-%m-%Y")
print(random_date("01-01-2022", "31-12-2022"))
Задача 5. Случайный граф
Напишите программу, которая генерирует случайный граф в виде матрицы смежности и находит наименьшую сумму расстояний между вершинами.
Выходные данные:
Сгенерированный граф:
[0, 9, 7, 6]
[1, 0, 4, 1]
[4, 3, 0, 0]
[3, 7, 7, 0]
Наименьшая сумма расстояний: 13
Листинг программы:
import random
INF = float('inf')
graph_size = random.randint(2, 5)
graph = [[random.randint(0, 9) if i != j else 0 for j in range(graph_size)] for i in range(graph_size)]
distances = [[INF for _ in range(graph_size)] for _ in range(graph_size)]
for i in range(graph_size):
for j in range(graph_size):
if graph[i][j] != 0:
distances[i][j] = graph[i][j]
for k in range(graph_size):
for i in range(graph_size):
for j in range(graph_size):
distances[i][j] = min(distances[i][j], distances[i][k] + distances[k][j])
minimum_distance = min(sum(row) for row in distances)
print("Сгенерированный граф:")
for row in graph:
print(row)
print("Наименьшая сумма расстояний:", minimum_distance)