Image

Как реализовать рандомизацию с помощью модуля Python Random

Давайте добавим случайность в результаты работы нашего кода.

Делиться

f6b07f560bf7748437a64d49317557b9

Введение в рандомизацию

В повседневной жизни мы сталкиваемся с различными совершенно случайными явлениями. Погода тоже случайна: конечно, мы можем её предсказывать и предсказывать, но лишь до определённой степени. Радиоактивный распад — тоже интересный случайный процесс, лишённый закономерностей и предсказуемости. В отличие от компьютеров, которые детерминированы и работают так, как запрограммированы, природе не требуется никакого программирования, условных операторов или циклов. Всё происходит совершенно случайным и непредсказуемым образом, и именно такая непредсказуемость иногда требуется нам в наших компьютерах и приложениях, например, в играх.

Нам нужны случайность и непредсказуемость в играх, в которые мы играем, чтобы нам не наскучили предопределённые сценарии и предсказуемые задачи. Нам также необходим элемент случайности при моделировании реальных ситуаций, тестировании алгоритмов или создании выборочных наборов данных.

13c418eb000045b2b68ee0cc61ed8d0d

В языках программирования рандомизация означает внесение непредсказуемости и изменчивости в выходные данные компьютера. Случайность генерируется в программе посредством случайных чисел.

Существует несколько методов генерации псевдослучайных чисел. В Python для генерации случайных чисел в модуле random используется вихрь Мерсенна. Несмотря на широкое применение в качестве генератора псевдослучайных чисел (ГПСЧ), вихрь Мерсенна обладает детерминированными свойствами, что делает его небезопасным для некоторых задач, требующих безопасности в первую очередь. В программировании генерация полностью случайных чисел довольно сложна, поэтому мы используем концепцию генерации псевдослучайных чисел, хотя они и воспроизводимы при задании начального значения, как будет показано далее.

В этой статье мы рассмотрим концепцию рандомизации, используя модуль Python random для генерации случайности в выходных данных нашего кода.

Случайный модуль Python

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

случайный — генерация псевдослучайных чисел

Чтобы использовать модуль random, нам нужно сначала импортировать его в наш код:

импорт случайных данных

Случайное число с плавающей точкой от 0 до 1

Первая задача, которую мы освоим, — это генерация случайного числа в диапазоне от 0 до 1, где 0 — невключительно, а 1 — включительно. Это можно сделать с помощью функции random().

случайное_значение = случайное.случайное() распечатать(случайное_значение)

Приведенный выше код сгенерирует случайное число с плавающей точкой в диапазоне от 0 до 1. Если вы запустите приведенный выше код несколько раз, каждый раз значение будет разным.

Случайное число с плавающей точкой в указанном диапазоне

Мы можем использовать функцию uniform() модуля random для генерации случайного числа в определенном диапазоне.

случайное_значение = случайное.равномерное(1,10) печать(случайное_значение)

При выполнении приведенного выше кода несколько раз будут выведены числа в диапазоне, указанном в скобках.

Случайное целое значение в определенном диапазоне

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

случайное_значение = случайное_значение.randint(1,6) print(случайное_значение)

Обратите внимание, что при запуске приведенного выше фрагмента кода числа 1 и 6 будут включены в сгенерированные случайные значения.

0fc2d7a8a3be6e6ae97dde6f4dbe3336

Случайное значение из списка значений

Далее мы рассмотрим, как сгенерировать случайное значение из списка значений. Для этого сначала нужно определить список элементов в Python, а затем использовать функцию choice() случайного значения для вывода случайного элемента из этого списка.

Для этого сначала создадим список, а затем воспользуемся функцией choice() модуля random, чтобы случайным образом выбрать один из объектов из списка. Предположим, у нас есть список наших кошек, и нам нужно выбрать одну, чтобы угостить её чем-то особенным. Вот как это можно сделать:

my_cats = [«Джерри», «Том», «Фигаро», «Белла», «Симба»] cat_chosen = random.choice(my_cats) print(cat_chosen)

Обратите внимание, что код выше является случайным, то есть не обязательно, что будут выбраны все кошки (хотя вероятность этого весьма высока, поскольку мы запускаем код), так что да, это несправедливый способ выбора того, кому дать особое угощение!

Более того, мы также можем создать список случайных вариантов с помощью функции choices(). Эта функция также позволяет нам определять вес каждого элемента списка, то есть мы можем увеличить вероятность случайного выбора любого элемента в списке:

mylist = [«яблоко», «банан», «вишня», «клубника»] print(random.choices(mylist, Weights = [2, 1, 1, 1,],], k = 8))

70412d3e8ab76502d4981d32ce2ec2e2

В приведенном выше коде мы передали mylist в качестве входной последовательности для функции choice(), а также веса каждого элемента списка и желаемую длину выходного списка со случайно выбранными элементами. Обратите внимание на количество встречающихся фруктов «яблоко» из-за увеличения его веса.

Случайное перемешивание списка элементов

Далее мы научимся случайным образом перемешивать элементы списка. Для этого можно использовать функцию shuffle() в модуле random.

колода = список(диапазон(1,53)) печать(колода) случайный.перетасовка(колода) печать(колода)

f9ac2d4f6eb690bc1d85474e66967c9a
d7fa9ef188dd755ba6bf1ccceb571d65

Случайная и уникальная выборка из списка

Предположим, мы хотим получить по 5 случайных карт для каждого из 4 игроков. Мы не можем использовать функцию choice(), поскольку нам нужны уникальные карты из колоды, без повторений. Для этого воспользуемся функцией sample():

колода = список(диапазон(1,53)) карты = случайная выборка(колода, 5) печать(карты)

0dcb790f855d3edf09b7e854f6e998a0

Случайное целое число из определенного диапазона с шагом

Функцию randrange() можно использовать для случайного выбора числа из определенного диапазона, в котором определены начальное и конечное значения, а также шаги.

случайное_число = случайное.randrange(0,10,2) печать(случайное_число)

Приведенный выше блок выдаст числа от 0 до 8, поскольку 10 не является включительным, а мы определили 2 как размер шага.

Начальная стоимость

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

случайное.seed(22) случайное_число = случайное.randrange(0,10,2) печать(случайное_число)

Приведённый выше код всегда будет генерировать случайное число «2», поскольку задано начальное значение «22». Если задать начальное значение «55», он будет снова и снова возвращать «0».

Применение случайного модуля

Хотя в модуле random больше функций и реализаций, перечисленные выше функции — одни из самых распространённых. Модуль random в Python можно использовать по-разному, в основном в играх и симуляциях реального мира. Мы можем использовать модуль random в играх, связанных с бросанием кубиков, как было рассмотрено выше, в игре с подбрасыванием монеты и даже в качестве генератора случайных паролей. С помощью модуля random можно также симулировать игру «Камень, ножницы, бумага» с помощью нескольких условных операторов и циклов!

a14996ab30f80975bbde9297fa1af3fd

Источник: towardsdatascience.com

✅ Найденные теги: Как, новости

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Фото сгенерированных лиц: исследование показывает, что люди не могут отличить настоящие лица от сгенерированных
Нейросети построили капитализм за трое суток: 100 агентов Claude заперли…
Скетч: цифровой осьминог и виртуальный мир внутри компьютера с человечком.
Сцена с жестами пальцами, где один жест символизирует "VPN", а другой "KHP".
‼️Paramount купила Warner Bros. Discovery — сумма сделки составила безумные…
Скриншот репозитория GitHub "Claude Scientific Skills" AI для научных исследований.
Структура эффективного запроса Claude с элементами задачи, контекста и референса.
Эскиз и готовая веб-страница платформы для AI-дизайна в современном темном режиме.
ideipro logotyp
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор раздела «Выходные». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после серьёзных повреждений.  Речь идёт о модифицированном армированном волокном полимере (FRP), который не просто сохраняет прочность при малом весе, но и способен «залечивать» внутренние…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель с разрешением 1 080×1 080 пикселей, поддержкой 10-точечного ёмкостного сенсора, оптической склейкой и защитным закалённым стеклом, выполненная в круглом форм-факторе.…

Мар 2, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых