01/22/2025
Классная работа
Генератор случайных чисел
Название папки – 4_11_F
Название файла – 4_11.py
Повторение
В) Умножение print (3 * 2)
Е) Деление print (6 / 2)
А)Возведение в степень print (6 ** 2)
Д)Взятие остатка от деления print (7 % 2)
Г)Вычитание print (3 - 2)
Б)Сложение print (3 + 2)
Ж)Целочисленное деление print (7 // 2)
Реализации случайных чисел в Python
Язык программирования Python содержит в себе несколько разных модулей, применяемых для генерации псевдослучайных величин. Все они, как правило, используют в своих целях текущее системное время, которое установлено на компьютере. Это гарантирует получение разных последовательностей значений при каждом новом обращении к генератору. Среди инструментов, которые предназначены для работы с псевдослучайными числами, находится довольно обширная библиотека random, а также функции numpy.random и os.urandom .
Реализации случайных чисел в Python
Особенности их применения:
- Стандартный модуль random в Python 3 включает множество методов для генерации как целых , так и вещественных чисел , а также последовательностей с определенными параметрами.
- Функция numpy.random используется для заполнения массивов случайными величинами.
- Функция os.urandom предоставляет набор из случайных байтов, что применимо в криптографии.
В модуле random есть класс SystemRandom , внутри реализации которого идет обращение как раз к os.urandom . В этом альтернативном генераторе реализованы те же функции, но их уже можно применять в криптографии.
Наиболее широкое применение получила в Python библиотека random . Поэтому далее мы ее и рассмотрим подробно.
import random
random_number = random . randint ( 1, 10 )
print ( random_number )
Название папки – 4_11_F_F
Название файла – 4_11.py
Модуль random
Метод
Характеристика
random()
возвращает число в диапазоне от 0 до 1
seed(a)
настаивает генератор на новую последовательность a
randint(a, b)
возвращает целое число в диапазоне от a и b
randrange(a, b, c)
возвращает целое число в диапазоне от a до b с шагом c
uniform(a, b)
shuffle(a)
возвращает вещественное число в диапазоне от a и b
перемешивает значения в списке a
choice(a)
возвращает случайный элемент из списка a
sample(a, b)
возвращает последовательность длиной b из набора a
getstate()
возвращает внутреннее состояние генератора
setstate(a)
восстанавливает внутреннее состояние генератора a
getrandbits(a)
возвращает a случайно сгенерированных бит
triangular(a, b, c)
возвращает вещественное число от a до b с распределением c
Вещественные числа
В модуле есть одноименная функция random . В Python она используется чаще, чем другие функции этого модуля. Функция возвращает вещественное число в промежутке от 0 до 1. В следующем примере демонстрируется создание трех разных переменных a, b и c.
import random
a = random . random ()
b = random . random ()
print ( a )
print ( b )
Целые числа
Для получения случайных целых чисел в определенном диапазоне используется функция randint , принимающая два аргумента: минимальное и максимальное значение. Программа, показанная ниже отображает генерацию трех разных значений в промежутке от 0 до 9.
import random
a = random . randint ( 0 , 9 )
b = random . randint ( 0 , 9 )
print ( a )
print ( b )
Диапазоны целых
Метод randrange позволяет генерировать целочисленные значения, благодаря работе с тремя параметрами: минимальная и максимальная величина, а также длина шага. Вызвав функцию с одним аргументом, начальная граница получит значение 0, а интервал станет равен 1. Для двух аргументов автоматически инициализируется только длина шага.
import random
a = random . randrange ( 10 )
b = random . randrange ( 2 , 10 )
c = random . randrange ( 2 , 10 , 2 )
print ( a )
print ( b )
print ( c )
Диапазоны вещественных
Сгенерировать вещественное число поможет метод под названием uniform . Он принимает всего два аргумента, обозначающих минимальное и максимальное значения. Демонстрация его работы располагается в следующем примере кода, где создаются переменные a, b и c.
import random
a = random . uniform ( 0 , 10 )
b = random . uniform ( 0 , 10 )
print ( a )
print ( b )
Использование в генераторах
Возможности генерации псевдослучайных чисел можно использовать и для создания последовательностей. В следующем фрагменте кода создается набор чисел при помощи генератора списка со случайным наполнением и длиной. Как можно заметить, в данном примере функция randint вызывается дважды: для каждого элемента и размера списка.
import random
a = [ random . randint ( 0 , 9 ) for i in range ( random . randint ( 0 , 9 ))]
print ( a )
Перемешивание
Метод shuffle дает возможность перемешать содержимое уже созданного списка . Таким образом, все его элементы будут находиться в абсолютно случайном порядке. Пример, где отображается работа этой функции со списком a из 10 значений, располагается дальше.
import random
a = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
random . shuffle ( a )
print ( a )
Случайный элемент списка
При помощи функции choice можно извлечь случайный элемент из существующего набора данных. В следующем примере переменная b получает некое целое число из списка a.
import random
a = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
b = random . choice ( a )
print ( b )
Несколько элементов списка
Извлечь из последовательности данных можно не только один элемент, но и целый набор значений. Функция sample позволит получить абсолютно новый список чисел из случайных компонентов уже существующего списка. В качестве первого аргумента необходимо ввести исходную последовательность, а на месте второго указать желаемую длину нового массива.
import random
a = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
a = random . sample ( a , 5 )
print ( a )
SystemRandom
Как уже говорилось ранее, SystemRandom основана на os.urandom . Она выдает так же псевдослучайные данные, но они зависят дополнительно и от операционной системы. Результаты используются в криптографии. Есть недостаток — то что функции SystemRandom отрабатывают в несколько раз дольше . Рассмотрим пример использования:
import random
sr = random . SystemRandom ()
a = sr . random ()
b = sr . randint ( 0 , 9 )
c = sr . randrange ( 2 , 10 , 2 )
print ( a )
print ( b )
print ( c )
Генерация букв
Возможности стандартной библиотеки позволяют генерировать не только числа, но и буквы. В следующем примере показывается инициализация трех разных переменных случайными символами латиницы. Для этого необходимо произвести импортирование модуля string , а затем воспользоваться списком letters , который включает все буквы английского алфавита.
import random
import string
a = random . choice ( string .letters)
b = random . choice ( string .letters)
c = random . choice ( string .letters)
print ( a )
print ( b )
print ( c )
Таким образом, язык программирования Python содержит массу встроенных методов для генерации и обработки случайных значений. Пользоваться ими можно при помощи разных библиотек, входящих в стандартный набор инструментов платформы. Благодаря данным функциям можно задавать различные условия, а также ограничения для своих генераторов.