Python:
Генерация случайных чисел
Как это сделать:
Python предоставляет модуль random
, который помогает генерировать случайные числа для различных целей. Вот как начать:
Импортирование модуля
import random
Генерация случайного целого числа Между любыми двумя числами.
random_integer = random.randint(1, 10) print(random_integer)
Пример вывода:
7
Генерация случайного числа с плавающей точкой Между 0 и 1.
random_float = random.random() print(random_float)
Пример вывода:
0.436432634653
Если нужно число с плавающей точкой в другом диапазоне, умножьте:
random_float_range = random.random() * 5 # от 0 до 5 print(random_float_range)
Пример вывода:
3.182093745
Выбор случайного элемента из списка
greetings = ['Hello', 'Hi', 'Hey', 'Hola', 'Bonjour'] print(random.choice(greetings))
Пример вывода:
Hola
Перетасовка списка Идеально подходит для карточных игр или любых приложений, где нужно случайным образом изменить порядок.
numbers = list(range(10)) random.shuffle(numbers) print(numbers)
Пример вывода:
[2, 5, 0, 4, 9, 8, 1, 7, 6, 3]
Глубокое погружение
Модуль random
в Python использует генератор псевдослучайных чисел (ГПСЧ), в частности, алгоритм вихря Мерсенна, который хорошо подходит для общего использования, но не подходит для криптографических целей из-за его предсказуемости при наблюдении за достаточным количеством результатов. Модуль secrets
, введенный в Python 3.6, предлагает лучшую альтернативу для генерации криптографически надежных случайных чисел, особенно полезных в приложениях, чувствительных к безопасности. Например, генерация безопасного случайного токена для ссылки на сброс пароля:
import secrets
token = secrets.token_hex(16)
print(token)
Исторически генерация действительно случайных чисел была вызовом в вычислениях, ранние методы полагались на физические явления или вручную введенные начальные значения. Разработка и принятие алгоритмов, таких как вихрь Мерсенна (используется по умолчанию в модуле random
Python по крайней мере до моего последнего обновления знаний в 2023 году), ознаменовали значительный прогресс. Однако постоянный поиск более безопасных и эффективных алгоритмов привел к включению модуля secrets
для задач, связанных с криптографией. Эта эволюция отражает растущее значение безопасности в разработке программного обеспечения и необходимость более надежной случайности в приложениях, начиная от шифрования и заканчивая генерацией безопасных токенов.