Min Max
Готово
При больших диапазонах и “без повторов” генерация может занять чуть больше времени.

Результаты

Генератор истинно случайных чисел на основе радиошума

Случайные числа используются намного шире, чем может показаться на первый взгляд. Они лежат в основе криптографии, систем безопасности, научного моделирования, статистических расчётов, тестирования программного обеспечения и множества прикладных задач. Однако далеко не каждое число, полученное с помощью компьютера, можно считать по-настоящему случайным.

Большинство стандартных генераторов, встроенных в языки программирования и браузеры, создают так называемые псевдослучайные числа. Они выглядят хаотичными, но на самом деле вычисляются по детерминированному алгоритму и зависят от начального состояния. Для многих бытовых задач этого достаточно, но в ситуациях, где важна непредсказуемость и доверие к результату, требуется иной подход.

Именно для таких случаев используются истинно случайные числа, получаемые на основе физических источников энтропии.


Псевдослучайные и истинно случайные числа: в чём разница

Псевдослучайный генератор (PRNG) — это алгоритм, который по заданной формуле вычисляет последовательность чисел. Если известен начальный параметр (seed), вся последовательность может быть воспроизведена полностью. Даже самые качественные PRNG остаются предсказуемыми в теории.

Истинно случайные генераторы (TRNG, True Random Number Generator) используют физические процессы, в которых присутствует неконтролируемая случайность. Такие процессы невозможно точно повторить или предсказать, а значит получаемые числа обладают принципиально иным уровнем надёжности.

Радиошум как источник физической энтропии

Одним из наиболее наглядных и доступных источников физической случайности является радиошум. Он представляет собой хаотические колебания электромагнитного сигнала, возникающие под влиянием множества факторов: фонового излучения, атмосферных процессов, электронных компонентов и окружающей среды.

Ключевая особенность радиошума заключается в том, что он не создаётся алгоритмом и не подчиняется жёсткой формуле. Даже при одинаковых условиях последовательные измерения сигнала будут отличаться друг от друга. Это делает радиошум подходящей основой для генерации истинно случайных чисел.

Для понимания физической природы шума часто приводят выражение для теплового шума:

\[ N = k \cdot T \cdot B \]

где
N — мощность шума,
k — постоянная Больцмана,
T — температура,
B — полоса частот.

Хотя в реальных системах источники могут быть сложнее, сама идея остаётся неизменной: шум формируется совокупностью неконтролируемых факторов.

Преобразование радиошума в случайные числа

Сырой радиошум — это аналоговый сигнал. Чтобы получить из него числа, используется несколько последовательных этапов обработки:

  1. сигнал оцифровывается и преобразуется в поток данных;
  2. данные переводятся в последовательность битов;
  3. устраняется смещение (bias), связанное с особенностями аппаратного источника;
  4. из очищенного потока формируются числа в заданном диапазоне.

Для устранения смещения часто применяется экстракция энтропии. Один из базовых и хорошо известных методов — экстрактор фон Неймана. Он позволяет уменьшить влияние перекоса источника и получить более равномерное распределение битов.

Равномерное распределение в заданном диапазоне

После получения потока случайных битов возникает задача корректного преобразования их в числа в диапазоне [Min, Max]. Простейшая формула имеет вид:

\[ R = Min + (X \bmod (Max - Min + 1)) \]

где X — большое случайное число, полученное из битового потока.

На практике важно учитывать возможность модульного смещения. Поэтому в качественных реализациях используется метод отклонения (rejection sampling), при котором значения, создающие перекос распределения, отбрасываются, а генерация продолжается до получения корректного результата.

Если требуется режим генерации без повторов, дополнительно проверяется уникальность значений. При этом очевидное ограничение заключается в том, что количество запрашиваемых чисел не может превышать размер диапазона.

Пример: идея генерации случайного числа

Ниже приведён небольшой пример, иллюстрирующий сам принцип преобразования энтропии в число. Он не претендует на промышленную реализацию, но помогает понять логику процесса.

import os

    def von_neumann(bits):
        stream = "".join(f"{b:08b}" for b in bits)
        result = []
        for i in range(0, len(stream) - 1, 2):
            pair = stream[i:i+2]
            if pair == "01":
                result.append("0")
            elif pair == "10":
                result.append("1")
        return "".join(result)

    def random_int(min_v, max_v):
        raw = os.urandom(64)           # пример источника энтропии
        bits = von_neumann(raw)
        value = int(bits[:64], 2)
        return min_v + value % (max_v - min_v + 1)

    print(random_int(1, 100))

Этот код демонстрирует ключевую идею: качество случайных чисел определяется не интерфейсом, а цепочкой «источник энтропии → экстракция → корректное преобразование».

Где особенно важны истинно случайные числа

Истинная случайность имеет решающее значение в ряде задач:

  • генерация криптографических ключей и токенов;
  • системы безопасности и аутентификации;
  • научные и статистические эксперименты;
  • моделирование и методы Монте-Карло;
  • честные розыгрыши и выборки без предсказуемости.

В менее критичных сценариях допустимо использовать псевдослучайные генераторы, однако при работе с чувствительными данными или ответственными расчётами физическая энтропия обеспечивает существенно более высокий уровень доверия.

Онлайн-генератор на основе радиошума

Онлайн-генератор истинно случайных чисел на основе радиошума позволяет получить результат без необходимости самостоятельно разрабатывать и настраивать аппаратную часть. Пользователь может задать диапазон значений, выбрать количество чисел, включить режим исключения повторов и сразу получить результат, сформированный на основе физического источника энтропии.

Такой подход сочетает удобство веб-интерфейса с преимуществами истинной случайности, что делает его подходящим как для прикладных задач, так и для профессионального использования.

Заключение

Истинно случайные числа — это фундамент для задач, где важна непредсказуемость и доверие к результату. Использование радиошума в качестве источника энтропии позволяет получить случайность, не зависящую от алгоритмов и начальных параметров.

Генераторы, основанные на физических процессах, занимают особое место среди инструментов работы со случайными данными и становятся логичным выбором в ситуациях, где качество случайности имеет принципиальное значение.