[uanog] urandom/Linux

Volodymyr Litovka doka.ua at gmail.com
Fri Jul 27 12:53:37 EEST 2018


Нетч,

прекрасно, спасибо.

On 7/27/18 12:49 PM, Valentin Nechayev wrote:
> hi,
>
>   Wed, Jul 25, 2018 at 12:04:57, doka.ua wrote about "[uanog] urandom/Linux":
>
>> а кто представляет/знает, как работает urandom в Linux?
> Генерирует последовательность равномерно распределённых
> псевдослучайных байтов.
> Уровень энтропии достаточный для быта и для криптографии без особых
> запросов.
> Метод использования - открыть и читать в буфер нужного размера.
>
>
>> Существует-ли вероятность, что в течение, например, 2ms он может
>> выдать два и более одинаковых значений?
> Что такое "значение"?
> Если, например, 1 байт, то достаточно прочесть более 16 байт за раз,
> чтобы вероятность наличия хотя бы двух совпадающих была более 50% (см.
> "парадокс близнецов").
> Если 4-байтовое целое, нужно таких прочесть более 65536.
> От времени это не зависит.
>
> В общем случае, поскольку оно претендует на характеристики
> действительно случайного потока с равномерным распределением,
> вероятность двух одинаковых байт подряд, например, 1/256, а как она
> ляжет в конкретном случае - заранее непредсказуемо. Ибо так ведёт себя
> честная случайность.
>
> Если у тебя задача получить _разные_ значения, то это делается так:
> 1. Генерируется последовательность этих разных значений (например, от
> 1 до 1000).
> 2. Рядом с ней формируется последовательность случайных чисел (лучше -
> в более широком диапазоне).
> 3. Сортируется последовательность 2 (веса), так, что при перестановке
> одновременно переставляются элементы последовательности 1 с теми же
> индексами.
> Результат - переставленная последовательность 1 - и есть искомое.
>
> В Python это стандартно представлено в виде random.shuffle, например
>
>      a = list(range(1000))
>      random.shuffle(a)
>
>
> -netch-

-- 
Volodymyr Litovka
   "Vision without Execution is Hallucination." -- Thomas Edison



More information about the uanog mailing list