HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>31 май 2024</li>
2 <ul><li>31 май 2024</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Познаём случайные числа и учимся их генерировать.</p>
4 </ul><p>Познаём случайные числа и учимся их генерировать.</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Пишет о сетях, инструментах для разработчиков и языках программирования. Любит готовить, играть в инди‑игры и программировать на Python.</p>
6 <p>Пишет о сетях, инструментах для разработчиков и языках программирования. Любит готовить, играть в инди‑игры и программировать на Python.</p>
7 <p>Это статья для начинающих программистов, которые изучают математику в Python и дошли до модуля random. Мы объясним, как он устроен и где используется, а также из каких функций состоит. После объяснения будет подборка проектов для желающих изучить работу с библиотекой на практике.</p>
7 <p>Это статья для начинающих программистов, которые изучают математику в Python и дошли до модуля random. Мы объясним, как он устроен и где используется, а также из каких функций состоит. После объяснения будет подборка проектов для желающих изучить работу с библиотекой на практике.</p>
8 <p><strong>Содержание</strong></p>
8 <p><strong>Содержание</strong></p>
9 <ul><li><a>Для чего нужен модуль random в Python</a></li>
9 <ul><li><a>Для чего нужен модуль random в Python</a></li>
10 <li><a>Как работает генерация случайных чисел в Python</a></li>
10 <li><a>Как работает генерация случайных чисел в Python</a></li>
11 <li><a>Функции модуля random</a></li>
11 <li><a>Функции модуля random</a></li>
12 </ul><ul><li><a>Функции для генерации случайных чисел в диапазоне</a></li>
12 </ul><ul><li><a>Функции для генерации случайных чисел в диапазоне</a></li>
13 </ul><ul><li><a>random.random(): возвращает число с плавающей точкой в диапазоне 0.0 &lt;= N &lt; 1.0</a></li>
13 </ul><ul><li><a>random.random(): возвращает число с плавающей точкой в диапазоне 0.0 &lt;= N &lt; 1.0</a></li>
14 <li><a>random.uniform(a, b): возвращает число с плавающей точкой в диапазоне a &lt;= N &lt;= b</a></li>
14 <li><a>random.uniform(a, b): возвращает число с плавающей точкой в диапазоне a &lt;= N &lt;= b</a></li>
15 <li><a>random.randint(a, b): возвращает целое число в диапазоне a &lt;= N &lt;= b</a></li>
15 <li><a>random.randint(a, b): возвращает целое число в диапазоне a &lt;= N &lt;= b</a></li>
16 <li><a>random.randrange(start, stop, step): возвращает целое число в заданном диапазоне с учётом шага</a></li>
16 <li><a>random.randrange(start, stop, step): возвращает целое число в заданном диапазоне с учётом шага</a></li>
17 </ul><ul><li><a>Функции для работы с коллекциями</a></li>
17 </ul><ul><li><a>Функции для работы с коллекциями</a></li>
18 </ul><ul><li><a>random.choice(seq): возвращает случайный элемент из последовательности</a></li>
18 </ul><ul><li><a>random.choice(seq): возвращает случайный элемент из последовательности</a></li>
19 <li><a>random.sample(population, k): выбирает случайные элементы из коллекции</a></li>
19 <li><a>random.sample(population, k): выбирает случайные элементы из коллекции</a></li>
20 <li><a>random.shuffle(seq): в случайном порядке перемешивает последовательность элементов</a></li>
20 <li><a>random.shuffle(seq): в случайном порядке перемешивает последовательность элементов</a></li>
21 </ul><ul><li><a>Функции для методов распределения</a></li>
21 </ul><ul><li><a>Функции для методов распределения</a></li>
22 </ul><ul><li><a>normalvariate(mu, sigma): выдаёт случайное число по закону нормального распределения</a></li>
22 </ul><ul><li><a>normalvariate(mu, sigma): выдаёт случайное число по закону нормального распределения</a></li>
23 <li><a>lognormalvariate(mu, sigma): создаёт случайные числа по закону логнормального распределения</a></li>
23 <li><a>lognormalvariate(mu, sigma): создаёт случайные числа по закону логнормального распределения</a></li>
24 <li><a>random.expovariate(lambd): генерит случайные числа по закону экспоненциального распределения</a></li>
24 <li><a>random.expovariate(lambd): генерит случайные числа по закону экспоненциального распределения</a></li>
25 </ul><ul><li><a>Проекты с модулем random</a></li>
25 </ul><ul><li><a>Проекты с модулем random</a></li>
26 </ul><ul><li><a>Игра "Змейка" на Pygame</a></li>
26 </ul><ul><li><a>Игра "Змейка" на Pygame</a></li>
27 <li><a>Игра "Угадай число"</a></li>
27 <li><a>Игра "Угадай число"</a></li>
28 <li><a>Генератор случайных аватарок на Pillow</a></li>
28 <li><a>Генератор случайных аватарок на Pillow</a></li>
29 </ul><ul><li><a>Что дальше</a></li>
29 </ul><ul><li><a>Что дальше</a></li>
30 </ul><p>Модуль random в Python предназначен для генерации псевдослучайных чисел. В этом разделе мы разберёмся: что такое псевдослучайные числа, чем они отличаются от случайных, зачем вообще нужны и где применяются.</p>
30 </ul><p>Модуль random в Python предназначен для генерации псевдослучайных чисел. В этом разделе мы разберёмся: что такое псевдослучайные числа, чем они отличаются от случайных, зачем вообще нужны и где применяются.</p>
31 <p>Начнём с понятия случайных чисел, которые правильней считать истинно случайными числами. Это некие непредсказуемые значения, которые на сегодняшний момент невозможно умышленно воспроизвести.</p>
31 <p>Начнём с понятия случайных чисел, которые правильней считать истинно случайными числами. Это некие непредсказуемые значения, которые на сегодняшний момент невозможно умышленно воспроизвести.</p>
32 <p>Учёные научились добывать истинно случайные числа из физических процессов окружающего мира с помощью<a>аппаратных генераторов</a>. Одно из первых подобных устройств появилось в 1957 году и называлось<a>ERNIE</a>.</p>
32 <p>Учёные научились добывать истинно случайные числа из физических процессов окружающего мира с помощью<a>аппаратных генераторов</a>. Одно из первых подобных устройств появилось в 1957 году и называлось<a>ERNIE</a>.</p>
33 <p>Это был аппарат со стеклянными трубками, заполненными неоном. Под действием высокого напряжения электроны внутри трубок отрывались от атомов неона, хаотично двигались и создавали случайный шум. Компьютер усиливал этот шум и преобразовывал полученные данные в случайные числа.</p>
33 <p>Это был аппарат со стеклянными трубками, заполненными неоном. Под действием высокого напряжения электроны внутри трубок отрывались от атомов неона, хаотично двигались и создавали случайный шум. Компьютер усиливал этот шум и преобразовывал полученные данные в случайные числа.</p>
34 Фильм 1964 года: демонстрация работы электронного генератора случайных чисел<em>Видео: Rod Willerton</em><p>Современные способы генерации истинно случайных чисел стали более технологичными и менее громоздкими. Например, британские инженеры научились<a>использовать</a>кристаллическую решётку химических растворов.</p>
34 Фильм 1964 года: демонстрация работы электронного генератора случайных чисел<em>Видео: Rod Willerton</em><p>Современные способы генерации истинно случайных чисел стали более технологичными и менее громоздкими. Например, британские инженеры научились<a>использовать</a>кристаллическую решётку химических растворов.</p>
35 <p>Для этого они заливают в ёмкость жидкий раствор и направляют на него камеру для фиксации хаотично формирующихся кристаллов. Сделанные фотографии анализирует алгоритм, который переводит кристаллические узоры в <a>бинарный код</a>. Затем этот код преобразуется в случайные числа.</p>
35 <p>Для этого они заливают в ёмкость жидкий раствор и направляют на него камеру для фиксации хаотично формирующихся кристаллов. Сделанные фотографии анализирует алгоритм, который переводит кристаллические узоры в <a>бинарный код</a>. Затем этот код преобразуется в случайные числа.</p>
36 Схема получения случайных чисел после кристаллизации химического раствора<em>Изображение: University of Glasgow /<a>Cell Press</a></em><p>У аппаратных генераторов истинно случайных чисел есть ограничения по скорости работы и количеству выдаваемых чисел в заданном диапазоне. Также многие из них дороги в обслуживании и склонны к деградации. Например, если аппарат построен на основе радиоактивного вещества, то со временем его количество может снизиться и это приведёт к погрешностям.</p>
36 Схема получения случайных чисел после кристаллизации химического раствора<em>Изображение: University of Glasgow /<a>Cell Press</a></em><p>У аппаратных генераторов истинно случайных чисел есть ограничения по скорости работы и количеству выдаваемых чисел в заданном диапазоне. Также многие из них дороги в обслуживании и склонны к деградации. Например, если аппарат построен на основе радиоактивного вещества, то со временем его количество может снизиться и это приведёт к погрешностям.</p>
37 <p>Учёным нужно было работать со случайными числами и придумать способ нивелировать недостатки аппаратных генераторов истинно случайных чисел. Так появились генераторы псевдослучайных чисел, которые вместо физических процессов используют<a>детерминированный алгоритм</a> - рассчитывают случайные числа на основе математических формул.</p>
37 <p>Учёным нужно было работать со случайными числами и придумать способ нивелировать недостатки аппаратных генераторов истинно случайных чисел. Так появились генераторы псевдослучайных чисел, которые вместо физических процессов используют<a>детерминированный алгоритм</a> - рассчитывают случайные числа на основе математических формул.</p>
38 <p>Ниже<a>цитата</a>профессора<a>Мадса Хаара</a>, основателя<a>Random.org</a> - генератора истинно случайных чисел с помощью атмосферного шума:</p>
38 <p>Ниже<a>цитата</a>профессора<a>Мадса Хаара</a>, основателя<a>Random.org</a> - генератора истинно случайных чисел с помощью атмосферного шума:</p>
39 <p>"Генераторы псевдослучайных чисел (ГПСЧ) эффективны, то есть могут создавать множество чисел за короткое время, и детерминированы, что означает, что заданная последовательность чисел может быть воспроизведена позже, если известна начальная точка последовательности.</p>
39 <p>"Генераторы псевдослучайных чисел (ГПСЧ) эффективны, то есть могут создавать множество чисел за короткое время, и детерминированы, что означает, что заданная последовательность чисел может быть воспроизведена позже, если известна начальная точка последовательности.</p>
40 <p>Эффективность - хорошая характеристика, если вашему приложению требуется много чисел, а детерминизм удобен, если вам нужно снова воспроизвести ту же последовательность чисел на более позднем этапе. ГПСЧ обычно также являются периодическими, что означает, что последовательность в конечном итоге будет повторяться. Хотя периодичность вряд ли когда-либо является желательной характеристикой, современные ГПСЧ имеют период, который настолько велик, что его можно игнорировать для большинства практических целей.</p>
40 <p>Эффективность - хорошая характеристика, если вашему приложению требуется много чисел, а детерминизм удобен, если вам нужно снова воспроизвести ту же последовательность чисел на более позднем этапе. ГПСЧ обычно также являются периодическими, что означает, что последовательность в конечном итоге будет повторяться. Хотя периодичность вряд ли когда-либо является желательной характеристикой, современные ГПСЧ имеют период, который настолько велик, что его можно игнорировать для большинства практических целей.</p>
41 <p>Эти характеристики делают ГПСЧ подходящими для приложений, где требуется много чисел и где полезно легко воспроизводить одну и ту же последовательность. Популярными примерами таких приложений являются моделирование и симуляции.</p>
41 <p>Эти характеристики делают ГПСЧ подходящими для приложений, где требуется много чисел и где полезно легко воспроизводить одну и ту же последовательность. Популярными примерами таких приложений являются моделирование и симуляции.</p>
42 <p>ГПСЧ не подходят для приложений, где важно, чтобы числа были действительно непредсказуемыми, например для шифрования данных и азартных игр".</p>
42 <p>ГПСЧ не подходят для приложений, где важно, чтобы числа были действительно непредсказуемыми, например для шифрования данных и азартных игр".</p>
43 <p><strong>Профессор Мадс Хаар</strong>, основатель<a>Random.org</a>, доцент факультета компьютерных наук и статистики в Дублине</p>
43 <p><strong>Профессор Мадс Хаар</strong>, основатель<a>Random.org</a>, доцент факультета компьютерных наук и статистики в Дублине</p>
44 <p>Сейчас генераторы псевдослучайных чисел встроены во многие языки программирования. В Python за это отвечает модуль random. В следующих разделах мы разберём принцип работы модуля и его основные функции.</p>
44 <p>Сейчас генераторы псевдослучайных чисел встроены во многие языки программирования. В Python за это отвечает модуль random. В следующих разделах мы разберём принцип работы модуля и его основные функции.</p>
45 <p>Случайные и псевдослучайные числа используются во многих сферах, где важна непредсказуемость. Например, при регистрации на новом сайте современные браузеры<a>предложат</a>вам пароль из случайных символов. В этом случае непредсказуемость повышает безопасность учётной записи.</p>
45 <p>Случайные и псевдослучайные числа используются во многих сферах, где важна непредсказуемость. Например, при регистрации на новом сайте современные браузеры<a>предложат</a>вам пароль из случайных символов. В этом случае непредсказуемость повышает безопасность учётной записи.</p>
46 <p>Подобные примеры встречаются в машинном обучении, тестировании, маркетинге, разработке игр и других областях. Ниже мы добавим статьи о различных направлениях, в которых не обходится без случайных чисел:</p>
46 <p>Подобные примеры встречаются в машинном обучении, тестировании, маркетинге, разработке игр и других областях. Ниже мы добавим статьи о различных направлениях, в которых не обходится без случайных чисел:</p>
47 <p>Для закрепления материала рекомендуем посмотреть фрагмент лекции о предназначении библиотеки random в разных языках программирования:</p>
47 <p>Для закрепления материала рекомендуем посмотреть фрагмент лекции о предназначении библиотеки random в разных языках программирования:</p>
48 Фрагмент лекции Александра Ханиевича Шеня о пользе генератора случайных чисел<em>Видео: "Vanechki: математика, биология и многое другое"</em><p>Для получения псевдослучайных чисел Python<a>использует</a>алгоритм "<a>Вихрь Мерсенна</a>". Для понимания его работы представьте вращающийся вихрь, заполненный числами. Когда вы используете функции модуля random, алгоритм выхватывает из вихря несколько чисел и создаёт на их основе случайное число. Это случайное число выводится в консоль, а взятые из вихря числа возвращаются, и процесс может повторяться множество раз.</p>
48 Фрагмент лекции Александра Ханиевича Шеня о пользе генератора случайных чисел<em>Видео: "Vanechki: математика, биология и многое другое"</em><p>Для получения псевдослучайных чисел Python<a>использует</a>алгоритм "<a>Вихрь Мерсенна</a>". Для понимания его работы представьте вращающийся вихрь, заполненный числами. Когда вы используете функции модуля random, алгоритм выхватывает из вихря несколько чисел и создаёт на их основе случайное число. Это случайное число выводится в консоль, а взятые из вихря числа возвращаются, и процесс может повторяться множество раз.</p>
49 <p>"<a>Вихрь Мерсенна</a>" работает быстро и позволяет сгенерировать большое количество случайных чисел до момента, когда они начнут повторяться. После запуска алгоритм обрабатывает начальное значение (seed), которое в Python можно задать вручную или оставить со значением по умолчанию.</p>
49 <p>"<a>Вихрь Мерсенна</a>" работает быстро и позволяет сгенерировать большое количество случайных чисел до момента, когда они начнут повторяться. После запуска алгоритм обрабатывает начальное значение (seed), которое в Python можно задать вручную или оставить со значением по умолчанию.</p>
50 <p>Если вы укажете начальное значение вручную, то при каждом запуске алгоритм будет генерить одинаковую последовательность чисел. Это может быть полезно для отладки или тестирования приложения, когда нужно много раз воспроизвести код и оценить результаты его работы.</p>
50 <p>Если вы укажете начальное значение вручную, то при каждом запуске алгоритм будет генерить одинаковую последовательность чисел. Это может быть полезно для отладки или тестирования приложения, когда нужно много раз воспроизвести код и оценить результаты его работы.</p>
51 <p>По умолчанию начальное значение явно не указано, и за его основу Python берёт текущее время в операционной системе. Это позволяет при каждом запуске программы видеть новую последовательность случайных чисел.</p>
51 <p>По умолчанию начальное значение явно не указано, и за его основу Python берёт текущее время в операционной системе. Это позволяет при каждом запуске программы видеть новую последовательность случайных чисел.</p>
52 <p>В этом разделе мы сильно упростили принцип получения случайных чисел из "Вихря Мерсенна". Если вам интересны технические подробности - рекомендуем статью<a>The Mersenne Twister</a>инженера Джона Саварда.</p>
52 <p>В этом разделе мы сильно упростили принцип получения случайных чисел из "Вихря Мерсенна". Если вам интересны технические подробности - рекомендуем статью<a>The Mersenne Twister</a>инженера Джона Саварда.</p>
53 "Вихрь Мерсенна" - это сложный алгоритм генерации случайных чисел, основанный на регистре сдвига, операциях XOR и 32 катушках. На схеме проиллюстрирован<a>регистр сдвига с линейной обратной связью</a>. "Вихрь Мерсенна" обеспечивает высокую скорость и непредсказуемость, поэтому его часто используют в разных языках программирования<em>Изображение: Joe Saward /<a>Quadibloc</a></em><p>Модуль random входит в <a>стандартную библиотеку Python</a>и относится к <a>числовым и математическим модулям</a>. В этом разделе мы расскажем об основных функциях и для удобства разделим их на группы по назначению.</p>
53 "Вихрь Мерсенна" - это сложный алгоритм генерации случайных чисел, основанный на регистре сдвига, операциях XOR и 32 катушках. На схеме проиллюстрирован<a>регистр сдвига с линейной обратной связью</a>. "Вихрь Мерсенна" обеспечивает высокую скорость и непредсказуемость, поэтому его часто используют в разных языках программирования<em>Изображение: Joe Saward /<a>Quadibloc</a></em><p>Модуль random входит в <a>стандартную библиотеку Python</a>и относится к <a>числовым и математическим модулям</a>. В этом разделе мы расскажем об основных функциях и для удобства разделим их на группы по назначению.</p>
54 <p>Перед знакомством с функциями вам нужно<a>установить Python под свою ОС</a>, создать в <a>редакторе</a>файл с расширением .py и импортировать модуль библиотеки random. Импорт записывается одной строкой в начале файла:</p>
54 <p>Перед знакомством с функциями вам нужно<a>установить Python под свою ОС</a>, создать в <a>редакторе</a>файл с расширением .py и импортировать модуль библиотеки random. Импорт записывается одной строкой в начале файла:</p>
55 import random # Модуль random подключён, и теперь можно писать функции.<p>Представленные в этом разделе функции возвращают целые числа или<a>числа с плавающей точкой</a>в определённом диапазоне. Этот диапазон может задаваться параметрами функции или выставляться вручную.</p>
55 import random # Модуль random подключён, и теперь можно писать функции.<p>Представленные в этом разделе функции возвращают целые числа или<a>числа с плавающей точкой</a>в определённом диапазоне. Этот диапазон может задаваться параметрами функции или выставляться вручную.</p>
56 <p>Для выбора случайных чисел все функции используют<a>непрерывное равномерное распределение</a>. Это означает, что все числа в диапазоне могут выпасть с одинаковой вероятностью.</p>
56 <p>Для выбора случайных чисел все функции используют<a>непрерывное равномерное распределение</a>. Это означает, что все числа в диапазоне могут выпасть с одинаковой вероятностью.</p>
57 Понятие равномерного распределения: объяснение Владимира Мосина, кандидата физико-математических наук<em>Видео: "Матан"</em><p>Функция random() возвращает случайно сгенерированное число начиная с нуля и заканчивая единицей. Ноль может вернуться, а единица нет. Единица в данной функции находится за пределами числового диапазона.</p>
57 Понятие равномерного распределения: объяснение Владимира Мосина, кандидата физико-математических наук<em>Видео: "Матан"</em><p>Функция random() возвращает случайно сгенерированное число начиная с нуля и заканчивая единицей. Ноль может вернуться, а единица нет. Единица в данной функции находится за пределами числового диапазона.</p>
58 import random print(random.random())<p><strong>Примеры результатов:</strong></p>
58 import random print(random.random())<p><strong>Примеры результатов:</strong></p>
59 <ul><li>0.0971227764408;</li>
59 <ul><li>0.0971227764408;</li>
60 <li>0.458461556054;</li>
60 <li>0.458461556054;</li>
61 <li>0.333821679312;</li>
61 <li>0.333821679312;</li>
62 <li>0.511654197738;</li>
62 <li>0.511654197738;</li>
63 <li>0.774338286083.</li>
63 <li>0.774338286083.</li>
64 </ul><p>Для функции uniform() вы должны вручную выставить диапазон для генерации случайного числа. Функция вернёт число с плавающей точкой, которое может равняться начальной или конечной границе диапазона.</p>
64 </ul><p>Для функции uniform() вы должны вручную выставить диапазон для генерации случайного числа. Функция вернёт число с плавающей точкой, которое может равняться начальной или конечной границе диапазона.</p>
65 import random print(random.uniform(2.5, 5.5))<p><strong>Примеры результатов:</strong></p>
65 import random print(random.uniform(2.5, 5.5))<p><strong>Примеры результатов:</strong></p>
66 <ul><li>3.98864976695;</li>
66 <ul><li>3.98864976695;</li>
67 <li>4.16381651811;</li>
67 <li>4.16381651811;</li>
68 <li>5.19473678325;</li>
68 <li>5.19473678325;</li>
69 <li>4.67089126496;</li>
69 <li>4.67089126496;</li>
70 <li>3.04033733076.</li>
70 <li>3.04033733076.</li>
71 </ul><p>Для указания границ диапазона можно использовать целые числа. Однако функция uniform() всё равно будет возвращать число с плавающей точкой.</p>
71 </ul><p>Для указания границ диапазона можно использовать целые числа. Однако функция uniform() всё равно будет возвращать число с плавающей точкой.</p>
72 import random print(random.uniform(2, 5))<p><strong>Примеры результатов:</strong></p>
72 import random print(random.uniform(2, 5))<p><strong>Примеры результатов:</strong></p>
73 <ul><li>2.18071074823;</li>
73 <ul><li>2.18071074823;</li>
74 <li>4.12138593074;</li>
74 <li>4.12138593074;</li>
75 <li>4.42796643605;</li>
75 <li>4.42796643605;</li>
76 <li>2.87651870385;</li>
76 <li>2.87651870385;</li>
77 <li>2.31154629523.</li>
77 <li>2.31154629523.</li>
78 </ul><p>Для функции randint() вы вручную задаёте диапазон, и из него в консоль выводится случайное целое число. Границы диапазона учитываются.</p>
78 </ul><p>Для функции randint() вы вручную задаёте диапазон, и из него в консоль выводится случайное целое число. Границы диапазона учитываются.</p>
79 import random print(random.randint(1, 10))<p><strong>Примеры результатов:</strong></p>
79 import random print(random.randint(1, 10))<p><strong>Примеры результатов:</strong></p>
80 <ul><li>9;</li>
80 <ul><li>9;</li>
81 <li>3;</li>
81 <li>3;</li>
82 <li>8;</li>
82 <li>8;</li>
83 <li>7;</li>
83 <li>7;</li>
84 <li>1.</li>
84 <li>1.</li>
85 </ul><p>Для функции randrange() вам нужно обязательно указать два аргумента: начальное и конечное значение числового диапазона. После в консоль попадёт случайное целое число, которое может совпадать с начальным значением диапазона. Конечное значение диапазона выпасть не может.</p>
85 </ul><p>Для функции randrange() вам нужно обязательно указать два аргумента: начальное и конечное значение числового диапазона. После в консоль попадёт случайное целое число, которое может совпадать с начальным значением диапазона. Конечное значение диапазона выпасть не может.</p>
86 <p>Третий аргумент необязательный. Он отвечает за шаг, с которым функция randrange() будет перебирать последовательность чисел в заданном диапазоне. Если шаг не указан, то его значение будет равняться единице.</p>
86 <p>Третий аргумент необязательный. Он отвечает за шаг, с которым функция randrange() будет перебирать последовательность чисел в заданном диапазоне. Если шаг не указан, то его значение будет равняться единице.</p>
87 <p>Функция randrange() с шагом по умолчанию:</p>
87 <p>Функция randrange() с шагом по умолчанию:</p>
88 import random print(random.randrange(1, 20))<p><strong>Примеры результатов:</strong></p>
88 import random print(random.randrange(1, 20))<p><strong>Примеры результатов:</strong></p>
89 <ul><li>5;</li>
89 <ul><li>5;</li>
90 <li>1;</li>
90 <li>1;</li>
91 <li>1;</li>
91 <li>1;</li>
92 <li>5;</li>
92 <li>5;</li>
93 <li>4.</li>
93 <li>4.</li>
94 </ul><p>Функция randrange() с шагом 4:</p>
94 </ul><p>Функция randrange() с шагом 4:</p>
95 import random print(random.randrange(1, 20, 4))<p><strong>Примеры результатов:</strong></p>
95 import random print(random.randrange(1, 20, 4))<p><strong>Примеры результатов:</strong></p>
96 <ul><li>13;</li>
96 <ul><li>13;</li>
97 <li>5;</li>
97 <li>5;</li>
98 <li>9;</li>
98 <li>9;</li>
99 <li>17;</li>
99 <li>17;</li>
100 <li>17.</li>
100 <li>17.</li>
101 </ul><p>Коллекции - это общий термин, которым в языке Python обозначают сгруппированные наборы данных. Если эти данные упорядочены, то они называются последовательностями. К последовательностям можно отнести любые итерируемые объекты, которые можно перебрать по одному элементу за раз. Это списки, строки, кортежи и другие данные. В документации для обозначения последовательностей используется сокращение seq - это от слова sequence, "последовательность".</p>
101 </ul><p>Коллекции - это общий термин, которым в языке Python обозначают сгруппированные наборы данных. Если эти данные упорядочены, то они называются последовательностями. К последовательностям можно отнести любые итерируемые объекты, которые можно перебрать по одному элементу за раз. Это списки, строки, кортежи и другие данные. В документации для обозначения последовательностей используется сокращение seq - это от слова sequence, "последовательность".</p>
102 <p>Если данные хранятся хаотично, то их считают неупорядоченными коллекциями. В документации они обозначены словом population. К примерам неупорядоченных коллекций относятся множества и словари.</p>
102 <p>Если данные хранятся хаотично, то их считают неупорядоченными коллекциями. В документации они обозначены словом population. К примерам неупорядоченных коллекций относятся множества и словари.</p>
103 <p><strong>Если вы до этого не работали с коллекциями - рекомендуем перед дальнейшей работой с модулем random посмотреть следующие статьи:</strong></p>
103 <p><strong>Если вы до этого не работали с коллекциями - рекомендуем перед дальнейшей работой с модулем random посмотреть следующие статьи:</strong></p>
104 <p>Для удобства мы будем применять модуль random для числового списка.</p>
104 <p>Для удобства мы будем применять модуль random для числового списка.</p>
105 Визуальное представление списков в Python<em>Иллюстрация: Оля Ежак для Skillbox Media</em><p>Функция choice() нужна для выбора одного элемента из заполненной последовательности. В выборке участвуют все без исключения элементы.</p>
105 Визуальное представление списков в Python<em>Иллюстрация: Оля Ежак для Skillbox Media</em><p>Функция choice() нужна для выбора одного элемента из заполненной последовательности. В выборке участвуют все без исключения элементы.</p>
106 <p>Однако если вызвать функцию choice() и в качестве аргумента передать ей пустую последовательность, то в консоли высветится ошибка IndexError.</p>
106 <p>Однако если вызвать функцию choice() и в качестве аргумента передать ей пустую последовательность, то в консоли высветится ошибка IndexError.</p>
107 import random print(random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))<p><strong>Примеры результатов:</strong></p>
107 import random print(random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))<p><strong>Примеры результатов:</strong></p>
108 <ul><li>2;</li>
108 <ul><li>2;</li>
109 <li>9;</li>
109 <li>9;</li>
110 <li>1;</li>
110 <li>1;</li>
111 <li>3;</li>
111 <li>3;</li>
112 <li>3.</li>
112 <li>3.</li>
113 </ul><p>Функция sample() работает для последовательностей и неупорядоченных коллекций вроде<a>множества</a>. Для этой функции первым аргументом вы передаёте коллекцию, а вторым - количество уникальных элементов, которые нужно выбрать из этой коллекции. Пример: в коллекции десять элементов и вы хотите выбрать пять. В этом случае при каждом запуске функция sample() будет выводить в консоль пять уникальных элементов.</p>
113 </ul><p>Функция sample() работает для последовательностей и неупорядоченных коллекций вроде<a>множества</a>. Для этой функции первым аргументом вы передаёте коллекцию, а вторым - количество уникальных элементов, которые нужно выбрать из этой коллекции. Пример: в коллекции десять элементов и вы хотите выбрать пять. В этом случае при каждом запуске функция sample() будет выводить в консоль пять уникальных элементов.</p>
114 <p>Однако вы получите ошибку, если количество уникальных элементов будет больше размера коллекции. То есть в коллекции десять элементов, а вы захотите увидеть в консоли пятнадцать. Так эта функция не работает.</p>
114 <p>Однако вы получите ошибку, если количество уникальных элементов будет больше размера коллекции. То есть в коллекции десять элементов, а вы захотите увидеть в консоли пятнадцать. Так эта функция не работает.</p>
115 import random print(random.sample([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 5))<p><strong>Примеры результатов:</strong></p>
115 import random print(random.sample([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 5))<p><strong>Примеры результатов:</strong></p>
116 <ul><li>[5, 6, 10, 7, 1];</li>
116 <ul><li>[5, 6, 10, 7, 1];</li>
117 <li>[2, 3, 4, 10, 8];</li>
117 <li>[2, 3, 4, 10, 8];</li>
118 <li>[6, 8, 2, 1, 5];</li>
118 <li>[6, 8, 2, 1, 5];</li>
119 <li>[3, 5, 8, 4, 7];</li>
119 <li>[3, 5, 8, 4, 7];</li>
120 <li>[8, 10, 3, 9, 5].</li>
120 <li>[8, 10, 3, 9, 5].</li>
121 </ul><p>Если вам нужно, чтобы элементы из последовательности повторялись, то для этого подойдёт функция random.choices(). По принципу работы она похожа на random.sample(), но обладает гибкими настройками для выбора случайных элементов. Подробно об этих настройках можно узнать из <a>документации</a>.</p>
121 </ul><p>Если вам нужно, чтобы элементы из последовательности повторялись, то для этого подойдёт функция random.choices(). По принципу работы она похожа на random.sample(), но обладает гибкими настройками для выбора случайных элементов. Подробно об этих настройках можно узнать из <a>документации</a>.</p>
122 <p>Для запуска функции shuffle() вам необходимо предварительно создать переменную, добавить в неё последовательность, затем вызвать функцию и вывести результат в консоль. Если вы попробуете сразу вызывать функцию и напечатать результат в консоль, то получите значение None.</p>
122 <p>Для запуска функции shuffle() вам необходимо предварительно создать переменную, добавить в неё последовательность, затем вызвать функцию и вывести результат в консоль. Если вы попробуете сразу вызывать функцию и напечатать результат в консоль, то получите значение None.</p>
123 import random numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] random.shuffle(numbers) print(numbers)<p><strong>Примеры результатов:</strong></p>
123 import random numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] random.shuffle(numbers) print(numbers)<p><strong>Примеры результатов:</strong></p>
124 <ul><li>[3, 7, 2, 4, 1, 8, 5, 6, 10, 9];</li>
124 <ul><li>[3, 7, 2, 4, 1, 8, 5, 6, 10, 9];</li>
125 <li>[2, 1, 5, 4, 6, 3, 10, 9, 7, 8];</li>
125 <li>[2, 1, 5, 4, 6, 3, 10, 9, 7, 8];</li>
126 <li>[7, 8, 9, 5, 10, 2, 3, 1, 4, 6];</li>
126 <li>[7, 8, 9, 5, 10, 2, 3, 1, 4, 6];</li>
127 <li>[6, 10, 8, 1, 4, 3, 9, 7, 2, 5];</li>
127 <li>[6, 10, 8, 1, 4, 3, 9, 7, 2, 5];</li>
128 <li>[5, 10, 7, 9, 4, 8, 2, 6, 1, 3].</li>
128 <li>[5, 10, 7, 9, 4, 8, 2, 6, 1, 3].</li>
129 </ul><p>При каждом вызове функция shuffle() не только перемешивает элементы, но и сохраняет их новое расположение в переменную. Если вам важно после перемешивания сохранить исходное расположение элементов, то для этого нужно создать ещё одну переменную с копией нужного списка.</p>
129 </ul><p>При каждом вызове функция shuffle() не только перемешивает элементы, но и сохраняет их новое расположение в переменную. Если вам важно после перемешивания сохранить исходное расположение элементов, то для этого нужно создать ещё одну переменную с копией нужного списка.</p>
130 import random original_list = [1, 2, 3, 4, 5] shuffled_list = original_list[:] random.shuffle(shuffled_list) print("Original list:", original_list) print("Shuffled list:", shuffled_list)<p><strong>Пример результата:</strong></p>
130 import random original_list = [1, 2, 3, 4, 5] shuffled_list = original_list[:] random.shuffle(shuffled_list) print("Original list:", original_list) print("Shuffled list:", shuffled_list)<p><strong>Пример результата:</strong></p>
131 <ul><li>("Original list:", [1, 2, 3, 4, 5]);</li>
131 <ul><li>("Original list:", [1, 2, 3, 4, 5]);</li>
132 <li>("Shuffled list:", [3, 1, 4, 5, 2]).</li>
132 <li>("Shuffled list:", [3, 1, 4, 5, 2]).</li>
133 </ul><p>Под распределением в теории вероятностей понимают закон, по которому одна величина соответствует другой. Установить соответствие между величинами можно разными способами за счёт методов распределения. Например, если мы будем бросать кубик, то методы распределения помогут определить вероятность выпадения чисел в диапазоне от 1 до 6.</p>
133 </ul><p>Под распределением в теории вероятностей понимают закон, по которому одна величина соответствует другой. Установить соответствие между величинами можно разными способами за счёт методов распределения. Например, если мы будем бросать кубик, то методы распределения помогут определить вероятность выпадения чисел в диапазоне от 1 до 6.</p>
134 <p>Методов распределения много, и далее мы рассмотрим функции модуля random для основных из них. Остальные методы более специфичны, и их описание вы найдёте в <a>документации</a>.</p>
134 <p>Методов распределения много, и далее мы рассмотрим функции модуля random для основных из них. Остальные методы более специфичны, и их описание вы найдёте в <a>документации</a>.</p>
135 <p><strong>Если вы только знакомитесь с распределением, рекомендуем сначала прочесть следующие статьи:</strong></p>
135 <p><strong>Если вы только знакомитесь с распределением, рекомендуем сначала прочесть следующие статьи:</strong></p>
136 <p>Метод<a>нормального распределения</a>используется для проверки гипотез, когда для статистического анализа собрана большая выборка данных. Визуально этот тип распределения напоминает симметричный колокол, принцип работы которого наглядно продемонстрирован на <a>доске Гальтона</a>.</p>
136 <p>Метод<a>нормального распределения</a>используется для проверки гипотез, когда для статистического анализа собрана большая выборка данных. Визуально этот тип распределения напоминает симметричный колокол, принцип работы которого наглядно продемонстрирован на <a>доске Гальтона</a>.</p>
137 Демонстрация принципа нормального распределения на доске Гальтона<em>Видео: Sciencelab</em>Лекция о нормальном распределении и его свойствах. Преподаватель: Ульянкин Филлип Валерьевич из Высшей школы экономики<em>Видео: "Прикладная статистика"</em><p>Для генерации случайного числа функции normalvariate() нужно передать два параметра. Первый параметр mu - отвечает за среднее значение распределения. Второй параметр sigma - стандартное отклонение. В примере ниже мы берём среднее значение 0 и стандартное отклонение 1.</p>
137 Демонстрация принципа нормального распределения на доске Гальтона<em>Видео: Sciencelab</em>Лекция о нормальном распределении и его свойствах. Преподаватель: Ульянкин Филлип Валерьевич из Высшей школы экономики<em>Видео: "Прикладная статистика"</em><p>Для генерации случайного числа функции normalvariate() нужно передать два параметра. Первый параметр mu - отвечает за среднее значение распределения. Второй параметр sigma - стандартное отклонение. В примере ниже мы берём среднее значение 0 и стандартное отклонение 1.</p>
138 import random mu = 0 sigma = 1 random_number = random.normalvariate(mu, sigma) print(random_number)<p><strong>Примеры результатов:</strong></p>
138 import random mu = 0 sigma = 1 random_number = random.normalvariate(mu, sigma) print(random_number)<p><strong>Примеры результатов:</strong></p>
139 <ul><li>-1.04069136656;</li>
139 <ul><li>-1.04069136656;</li>
140 <li>1.56106418963;</li>
140 <li>1.56106418963;</li>
141 <li>2.15752839674;</li>
141 <li>2.15752839674;</li>
142 <li>-0.00216864768154;</li>
142 <li>-0.00216864768154;</li>
143 <li>0.157904318103.</li>
143 <li>0.157904318103.</li>
144 - </ul><p>Если использовать функцию normalvariate() вместе с <a>циклами</a>, то можно получить сразу несколько чисел, распредлённых по нормальному закону.</p>
144 + </ul><p>Если использовать функцию normalvariate() вместе с <a>циклами</a>, то можно получить сразу несколько чисел, распределённых по нормальному закону.</p>
145 import random mu = 0 sigma = 1 random_numbers = [random.normalvariate(mu, sigma) for _ in range(10)] print(random_numbers)<p><strong>Пример результата</strong><strong>из десяти случайных чисел:</strong></p>
145 import random mu = 0 sigma = 1 random_numbers = [random.normalvariate(mu, sigma) for _ in range(10)] print(random_numbers)<p><strong>Пример результата</strong><strong>из десяти случайных чисел:</strong></p>
146 <p>0.24299953033900287, 0.5537962330705753, 1.9218644750764622, -1.2106188146738326, -1.609069662113085, 2.3850359922986226, -0.19805893931375596, -0.1076120346364513, 0.3939314031552044, 0.7194200521076376.</p>
146 <p>0.24299953033900287, 0.5537962330705753, 1.9218644750764622, -1.2106188146738326, -1.609069662113085, 2.3850359922986226, -0.19805893931375596, -0.1076120346364513, 0.3939314031552044, 0.7194200521076376.</p>
147 <p>Для удобства вы можете подключить библиотеку<a>Matplotlib</a>и наблюдать за визуальным распределением случайных чисел с помощью графиков. Чем больший числовой диапазон вы укажете, тем наглядней будет картинка.</p>
147 <p>Для удобства вы можете подключить библиотеку<a>Matplotlib</a>и наблюдать за визуальным распределением случайных чисел с помощью графиков. Чем больший числовой диапазон вы укажете, тем наглядней будет картинка.</p>
148 import random import matplotlib.pyplot as plt mu = 0 sigma = 1 random_numbers = [random.normalvariate(mu, sigma) for _ in range(10000)] plt.hist(random_numbers, bins=50, density=True) plt.title("Histogram of normal distribution") plt.xlabel("Value") plt.ylabel("Frequency") plt.show()<p>Пример гистограммы для 10 000 случайно сгенерированных чисел:</p>
148 import random import matplotlib.pyplot as plt mu = 0 sigma = 1 random_numbers = [random.normalvariate(mu, sigma) for _ in range(10000)] plt.hist(random_numbers, bins=50, density=True) plt.title("Histogram of normal distribution") plt.xlabel("Value") plt.ylabel("Frequency") plt.show()<p>Пример гистограммы для 10 000 случайно сгенерированных чисел:</p>
149 <em>Инфографика: Skillbox Media</em><p>Метод<a>логнормального распределения</a>предназначен для моделирования данных, которые изменяются экспоненциально. Например, в финансовой сфере такое распределение помогает смоделировать колебание цен на акции, ведь у них нет фиксированного значения для роста или снижения.</p>
149 <em>Инфографика: Skillbox Media</em><p>Метод<a>логнормального распределения</a>предназначен для моделирования данных, которые изменяются экспоненциально. Например, в финансовой сфере такое распределение помогает смоделировать колебание цен на акции, ведь у них нет фиксированного значения для роста или снижения.</p>
150 Беседа физиков о логнормальном распределении с примерами из жизни<em>Видео:<a>Борис Бояршинов</a></em><p>Для работы функции lognormalvariate(mu, sigma) нужны те же параметры, которые мы использовали для настройки нормального распределения: нужно указать mu для среднего значения распределения и sigma - для определения стандартного отклонения. Также мы можем добавлять<a>циклы</a>и подключить библиотеку<a>Matplotlib</a>для визуализации полученных данных.</p>
150 Беседа физиков о логнормальном распределении с примерами из жизни<em>Видео:<a>Борис Бояршинов</a></em><p>Для работы функции lognormalvariate(mu, sigma) нужны те же параметры, которые мы использовали для настройки нормального распределения: нужно указать mu для среднего значения распределения и sigma - для определения стандартного отклонения. Также мы можем добавлять<a>циклы</a>и подключить библиотеку<a>Matplotlib</a>для визуализации полученных данных.</p>
151 import random import matplotlib.pyplot as plt mu = 0 sigma = 1 random_numbers = [random.lognormvariate(mu, sigma) for _ in range(10000)] plt.hist(random_numbers, bins=50, density=True) plt.title("Histogram of lognormal distribution") plt.xlabel("Value") plt.ylabel("Frequency") plt.show()<p>Пример гистограммы логнормального распределения, которая получена для 10 000 случайно сгенерированных чисел:</p>
151 import random import matplotlib.pyplot as plt mu = 0 sigma = 1 random_numbers = [random.lognormvariate(mu, sigma) for _ in range(10000)] plt.hist(random_numbers, bins=50, density=True) plt.title("Histogram of lognormal distribution") plt.xlabel("Value") plt.ylabel("Frequency") plt.show()<p>Пример гистограммы логнормального распределения, которая получена для 10 000 случайно сгенерированных чисел:</p>
152 <em>Инфографика: Skillbox Media</em><p>Метод<a>экспоненциального распределения</a>полезен для моделирования временных интервалов между последовательными и независимыми событиями, которые происходят со стационарной интенсивностью. Вот представьте, что вы получили сообщение. Теперь новое сообщение вы можете получить в любое время - момент получения предыдущего сообщения на это не влияет. Это и будет стационарной интенсивностью.</p>
152 <em>Инфографика: Skillbox Media</em><p>Метод<a>экспоненциального распределения</a>полезен для моделирования временных интервалов между последовательными и независимыми событиями, которые происходят со стационарной интенсивностью. Вот представьте, что вы получили сообщение. Теперь новое сообщение вы можете получить в любое время - момент получения предыдущего сообщения на это не влияет. Это и будет стационарной интенсивностью.</p>
153 Урок об экспоненциальном распределении: с формулами и подробным объяснением. Преподаватель: Ульянкин Филлип Валерьевич из Высшей школы экономики<em>Видео: "Прикладная статистика"</em><p>Как и в случае с предыдущими методами распределения, функция expovariate () совместима с <a>циклами</a>и библиотекой<a>Matplotlib</a>. Однако в качестве параметра нужно передавать lamd - интенсивность событий.</p>
153 Урок об экспоненциальном распределении: с формулами и подробным объяснением. Преподаватель: Ульянкин Филлип Валерьевич из Высшей школы экономики<em>Видео: "Прикладная статистика"</em><p>Как и в случае с предыдущими методами распределения, функция expovariate () совместима с <a>циклами</a>и библиотекой<a>Matplotlib</a>. Однако в качестве параметра нужно передавать lamd - интенсивность событий.</p>
154 import random import matplotlib.pyplot as plt lambd = 0.5 random_numbers = [random.expovariate(lambd) for _ in range(10000)] plt.hist(random_numbers, bins=50, density=True) plt.title("Histogram of exponential distribution") plt.xlabel("Value") plt.ylabel("Frequency") plt.show()<p>Пример гистограммы экспоненциального распределения для 10 000 случайно сгенерированных чисел:</p>
154 import random import matplotlib.pyplot as plt lambd = 0.5 random_numbers = [random.expovariate(lambd) for _ in range(10000)] plt.hist(random_numbers, bins=50, density=True) plt.title("Histogram of exponential distribution") plt.xlabel("Value") plt.ylabel("Frequency") plt.show()<p>Пример гистограммы экспоненциального распределения для 10 000 случайно сгенерированных чисел:</p>
155 <em>Инфографика: Skillbox Media</em><p>В этом разделе мы будем получать случайные значения на практике. Рекомендуем выполнить несколько проектов, чтобы закрепить теорию.</p>
155 <em>Инфографика: Skillbox Media</em><p>В этом разделе мы будем получать случайные значения на практике. Рекомендуем выполнить несколько проектов, чтобы закрепить теорию.</p>
156 <p>Для реализации проекта вам понадобятся библиотеки Pygame и random. Вы создадите игровое поле, добавите еду, научите змейку двигаться и увеличиваться в размерах - в общем полностью напишете игру с нуля.</p>
156 <p>Для реализации проекта вам понадобятся библиотеки Pygame и random. Вы создадите игровое поле, добавите еду, научите змейку двигаться и увеличиваться в размерах - в общем полностью напишете игру с нуля.</p>
157 <em>Скриншот: Pygame / Skillbox Media</em><p>Для этого проекта вам понадобится только библиотека random. Вы научите программу загадывать случайное число и попробуете его угадать. Если совершите неудачную попытку - программа подскажет, каким должно быть правильное число: больше или меньше указанного. Если угадаете - получите поздравление и узнаете, сколько попыток пришлось потратить.</p>
157 <em>Скриншот: Pygame / Skillbox Media</em><p>Для этого проекта вам понадобится только библиотека random. Вы научите программу загадывать случайное число и попробуете его угадать. Если совершите неудачную попытку - программа подскажет, каким должно быть правильное число: больше или меньше указанного. Если угадаете - получите поздравление и узнаете, сколько попыток пришлось потратить.</p>
158 <em>Видео: "Программирование l Создание игр, сайтов и т.д."</em><p>В этом проекте вы подключите библиотеку Pillow и создадите небольшие пиксельные изображения (5×5), как на дефолтных аватарках с сайта GitHub.</p>
158 <em>Видео: "Программирование l Создание игр, сайтов и т.д."</em><p>В этом проекте вы подключите библиотеку Pillow и создадите небольшие пиксельные изображения (5×5), как на дефолтных аватарках с сайта GitHub.</p>
159 Пример дефолтных аватарок с сайта GitHub. Это разноцветные пиксельные изображения, которые отображаются возле имени пользователя в комментариях и коммитах. Пиксельная аватарка пропадает, когда вы загружаете в свой профиль фотографию<em>Изображение:<a>Jason Long</a>/<a>GitHub</a></em><p>Затем вы сможете раскрасить полученные пиксельные изображения случайными цветами, которые поможет выбрать модуль random. Цвета будут определяться случайно, но с ограничением по оттенку - не должны быть слишком тёмными. Ещё можно будет добавить рамку вокруг аватара.</p>
159 Пример дефолтных аватарок с сайта GitHub. Это разноцветные пиксельные изображения, которые отображаются возле имени пользователя в комментариях и коммитах. Пиксельная аватарка пропадает, когда вы загружаете в свой профиль фотографию<em>Изображение:<a>Jason Long</a>/<a>GitHub</a></em><p>Затем вы сможете раскрасить полученные пиксельные изображения случайными цветами, которые поможет выбрать модуль random. Цвета будут определяться случайно, но с ограничением по оттенку - не должны быть слишком тёмными. Ещё можно будет добавить рамку вокруг аватара.</p>
160 <em>Видео: FlongyDev</em><p>Помимо модуля random, в Python есть и другие инструменты, которые упрощают проведение математических операций. О возможностях некоторых из таких инструментов мы рассказали в отдельных статьях:</p>
160 <em>Видео: FlongyDev</em><p>Помимо модуля random, в Python есть и другие инструменты, которые упрощают проведение математических операций. О возможностях некоторых из таких инструментов мы рассказали в отдельных статьях:</p>
161 <ul><li>"<a>Библиотека NumPy: всё, что нужно знать новичку</a>". Это библиотека для работы с многомерными массивами, которую программисты часто используют для анализа данных и обучения нейронных сетей.</li>
161 <ul><li>"<a>Библиотека NumPy: всё, что нужно знать новичку</a>". Это библиотека для работы с многомерными массивами, которую программисты часто используют для анализа данных и обучения нейронных сетей.</li>
162 <li>"<a>Округление в Python: выбираем лучший способ</a>". Чтобы превратить десятичную дробь в целое число можно использовать стандартные функции round() и int() или подключить модули math и decimal.</li>
162 <li>"<a>Округление в Python: выбираем лучший способ</a>". Чтобы превратить десятичную дробь в целое число можно использовать стандартные функции round() и int() или подключить модули math и decimal.</li>
163 <li>"<a>Библиотека Scikit-learn: как создать свой первый ML‑проект</a>". Это библиотека с набором основных алгоритмов машинного обучения: регрессией, классификацией, кластеризацией и другими методами.</li>
163 <li>"<a>Библиотека Scikit-learn: как создать свой первый ML‑проект</a>". Это библиотека с набором основных алгоритмов машинного обучения: регрессией, классификацией, кластеризацией и другими методами.</li>
164 <li>"<a>Работаем с Pandas: основные понятия и реальные данные</a>". Pandas поддерживает основные статистические методы для работы с данными, полезна при подготовке первичного анализа и аналитики.</li>
164 <li>"<a>Работаем с Pandas: основные понятия и реальные данные</a>". Pandas поддерживает основные статистические методы для работы с данными, полезна при подготовке первичного анализа и аналитики.</li>
165 <li>"<a>Библиотека Matplotlib для построения графиков</a>". Это библиотека для построения графиков и визуализации данных. Позволяет создавать линейные и круговые диаграммы, гистограммы и много что ещё.</li>
165 <li>"<a>Библиотека Matplotlib для построения графиков</a>". Это библиотека для построения графиков и визуализации данных. Позволяет создавать линейные и круговые диаграммы, гистограммы и много что ещё.</li>
166 </ul><p>А если вам нужно генерировать случайные числа для криптографических целей, то для этого в Python<a>предусмотрен</a>модуль secrets. Он позволяет создавать криптостойкие случайные числа, для которых характерен высокий уровень безопасности. На основе этого модуля можно создавать пароли, цифровые токены и данные для аутентификации в учётной записи.</p>
166 </ul><p>А если вам нужно генерировать случайные числа для криптографических целей, то для этого в Python<a>предусмотрен</a>модуль secrets. Он позволяет создавать криптостойкие случайные числа, для которых характерен высокий уровень безопасности. На основе этого модуля можно создавать пароли, цифровые токены и данные для аутентификации в учётной записи.</p>
167 <p>Python для всех</p>
167 <p>Python для всех</p>
168 <p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
168 <p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
169 <p><a>Пройти бесплатно</a></p>
169 <p><a>Пройти бесплатно</a></p>
170 <a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>
170 <a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>