Coding for KidsCoding for Kids
Творческие УровниИспытанияРуководство для Учителей
Голосовать за функции
Продвинутый курс разработки на Python
Глава
>
Уровень

Математические модули
Модуль случайных чисел

Цель

Проведение симуляций и тестов для подготовки к возможным ошибкам и задержкам во время строительства сельскохозяйственных угодий с помощью модуля random.

Через пристройку находится офис, занимающийся административными вопросами, оформлением документов по перевозкам, жилью и логистике для строительства. Было бы неплохо провести несколько сценариев, используя доступные данные, для расчёта задержек и сбоев в работе оборудования. Для этого мы будем использовать модуль random, активируемый командой import random .

Модуль используется для генерации случайных значений в различных диапазонах, что позволяет проводить симуляции или добавлять случайные элементы при вычислениях/упражнениях. Для наших целей мы будем использовать следующие функции:

  • random.seed(): Устанавливает начальное значение для генерации случайных чисел, принимает один аргумент — число, которое вы хотите использовать в качестве зерна. Это означает, что любая случайная функция, использующая заданное зерно, будет возвращать те же результаты при повторном использовании. Используется для управления генерацией случайных чисел и возможности воссоздания определённых результатов.
  • random.random(): Возвращает случайное число с плавающей запятой между 0 и 1.
  • random.randint(): Принимает два аргумента, генерирует число между ними, включая сами аргументы. Результат возвращается в виде целого числа.
  • random.uniform(): То же, что и предыдущая функция, но возвращает случайное число с плавающей запятой вместо целого.
  • random.triangular(): Аналогично предыдущей функции, но имеет дополнительный аргумент — модификатор, называемый mode. Значение mode должно находиться между двумя числами, задающими диапазон. Сгенерированное число будет статистически ближе к mode, а не равномерно случайным между двумя первыми аргументами.
  • random.choice(): Принимает список в качестве аргумента, случайным образом выбирает один элемент из списка.
  • random.choices(): Генерирует случайный список, взятый из другого списка, принимает три аргумента: список, из которого необходимо взять выборку, другой список, который указывает веса для каждого элемента из исходного списка, и, наконец, переменную с именем k, которой присваивается значение, определяющее количество элементов выборки. Количество выборок может превышать длину списка, поскольку могут генерироваться дубликаты на основе указанных весов.
  • random.shuffle(): Принимает список в качестве аргумента и случайным образом перемешивает его.
  • random.sample(): Принимает два аргумента: список, из которого необходимо взять выборку, и количество элементов выборки. Упрощённая версия random.choices() .

Чтобы начать, подойдите к светлому отметке с крестом и лицом к столу, используйте функцию read(), чтобы прочитать записку и определить точки данных, необходимые для запуска симуляции с некоторой случайной вариативностью. Мы собираемся провести симуляцию сбоя оборудования, записка подскажет вам, какое значение seed использовать для генерации случайных чисел, а также из какого списка брать данные. Используйте функцию random.seed() и вставьте значение, указанное в записке.

Подойдите к темной отметке с крестом на синем ковре и лицом к столу, у нас есть константа списка с названием sectors, которая содержит области сельскохозяйственных угодий, указанные в предыдущей записке. Создайте переменную с именем selection, чтобы сохранить значение random.choice(), используйте константу списка sectors для получения элемента из списка, например: selection = random.choice(sectors) . Создайте другую переменную с именем delay и сохраните значение random.random() для имитации погрешностей, вызванных задержками.

Создайте еще одну переменную с именем defect и сохраните значение random.randint(), чтобы сгенерировать процент потенциального сбоя оборудования. В качестве аргументов укажите 0 и 15, чтобы получить процент в этом диапазоне. После того как переменные selection, delay и defect будут настроены, используйте предварительно написанную функцию write() с этими тремя переменными в указанном порядке, чтобы зафиксировать точки данных, которые могут быть использованы для тестирования потенциальных проблем в строительстве.

Подойдите к золотой отметке с крестом и используйте функцию read(), чтобы продолжить выполнение прогнозов, данные в записке будут содержать материалы, количества и данные выборки. Мы собираемся провести более масштабную симуляцию с использованием данных из записки, включая константу списка с названием materials, которая хранит типы материалов, указанные в записке.

Подойдите к темной отметке с крестом на красном ковре и лицом к столу. Создайте список с именем weights и сохраните в нём четыре числовых значения, указанных в записке, соответствующих материалам в порядке их представления. Например: weights = [400, 600 , -insert value-, -insert value-]

Создайте переменную с именем simulation и сохраните в неё значение random.choices(), добавив константу списка materials, созданный вами список weights и список с именем k, содержащий единицы выборки, указанные в записке, например: simulation = random.choices(materials, weights , k = insert sampling units ) . Используйте переменную simulation с предварительно написанной функцией write(), чтобы зафиксировать данные.

Подойдите к темной отметке с крестом на зелёном ковре и лицом к столу, используйте функцию random.shuffle() с созданным списком simulation для его перемешивания, например: random.shuffle(simulation) . Это перемешает список, нет необходимости сохранять значение, так как функция изменяет список напрямую. Создайте список с именем sample и сохраните в нём значение random.sample(), добавив список simulation в качестве первого аргумента и указав во втором аргументе выборку из 3 элементов, например: sample = random.sample(simulation, k=3) . Используйте simulation и sample с предварительно написанной функцией write(), чтобы зафиксировать новые образцы.

Наконец, подойдите к темной отметке с крестом на фиолетовом ковре и лицом к столу, создайте переменную с именем defect и сохраните в неё результат random.uniform(), указав аргументы 3 и 10 . Это значения выборки для первоначальной симуляции и образца, взятого из неё, мы будем использовать их для генерации потенциальных пределов дефектности оборудования.

Создайте переменную с именем losses и сохраните в неё значение random.triangular(), добавив значения 200 , 600 и 400 . Это числовые показатели материалов, указанные в предыдущей записке, а именно минимальное, максимальное и значение, наиболее близкое к среднему. Это позволит получить треугольное случайное значение на основе количества материалов, использованных в симуляции. Используйте значения defect и losses с предварительно написанной функцией write(), чтобы получить результаты и завершить уровень.

Книга Кода