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 використовує генератор псевдовипадкових чисел (PRNG), зокрема алгоритм Мерсенна-Твістера, який добре підходить для загальних застосувань, але не підходить для криптографічних цілей через його передбачуваність, якщо спостерігати за достатньою кількістю виводів. Модуль secrets
, введений у Python 3.6, пропонує кращу альтернативу для генерації криптографічно стійких випадкових чисел, особливо корисних у застосуваннях з чутливістю до безпеки. Наприклад, генерація безпечного, випадкового токену для посилання на скидання пароля:
import secrets
token = secrets.token_hex(16)
print(token)
Історично, генерація дійсно випадкових чисел була викликом у комп’ютингу, з ранніми методами, що покладалися на фізичні явища або вручну введені початкові значення. Розробка та прийняття алгоритмів, таких як Мерсенн-Твістер (використовуваний за замовчуванням у модулі random
Python щонайменше до мого останнього оновлення знань у 2023 році), означало значний прогрес. Проте, постійний пошук більш безпечних та ефективних алгоритмів призвів до включення модулю secrets
для завдань, пов’язаних із криптографією. Ця еволюція відображає зростаючу важливість безпеки в розробці програмного забезпечення та потребу в більш надійній випадковості в додатках, що варіюються від шифрування до генерації безпечних токенів.