Генерація випадкових чисел

Python:
Генерація випадкових чисел

Як це зробити:

Python надає модуль random, який допомагає у генерації випадкових чисел для різних використань. Ось як розпочати:

  1. Імпортування модулю

    import random
  2. Генерація випадкового цілого числа Між будь-якими двома числами.

    random_integer = random.randint(1, 10)
    print(random_integer)

    Приклад виводу: 7

  3. Генерація числа з плаваючою комою Між 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

  4. Вибір випадкового елементу зі списку

    greetings = ['Hello', 'Hi', 'Hey', 'Hola', 'Bonjour']
    print(random.choice(greetings))

    Приклад виводу: Hola

  5. Перемішування списку Ідеально підходить для ігор з картами або будь-якого додатку, якому необхідно випадково змінити порядок.

    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 для завдань, пов’язаних із криптографією. Ця еволюція відображає зростаючу важливість безпеки в розробці програмного забезпечення та потребу в більш надійній випадковості в додатках, що варіюються від шифрування до генерації безпечних токенів.