Dig386 писал(а): ↑Полагаю, что такая схема уже очень сильно будет зависеть от конкретных свойств её элементов, а если на плате прямо распаивать - то ещё и от помех, разводки и т.п.
Вероятно, да. И длина проводов может влиять, и различие параметров транзисторов. Можно добавить обратную связь, которая будет заставлять выдавать генератор в среднем равное количество нулей и единиц (у Intel'а она есть). Вот только, в итоге может получиться последовательность 01010101...
Вспомнил ещё одну конструкцию с аппаратным генератором случайных чисел. Кажется, в 1989 году в журнале "Радио" было описание мелодичного дверного звонка, в котором мелодия генерируется случайным образом. Два генератора: "тактовый" (около 3 Гц) и "кодирующий" (где-то 30-50 кГц). Когда на выходе тактового "0" - кодирующий генератор наращивает 4-битный счётчик, а когда "1" - счётчик остановлен, получившееся число от 1 до 16 задаёт коэффициент деления для третьего (тонального) генератора, звучит соответствующий тон. Схема работала, мелодия звучала как случайная. Вот только (как я потом понял), она была основана на нестабильности частоты генераторов: они были собраны на микросхемах К155ЛА3 по схеме мультивибратора, которая из-за особенностей схемотехники, не отличается стабильностью, частота плавает буквально "от косого взгляда". Когда пытался повторить эту идею на микросхемах КМОП серии К176, у меня ничего не вышло: генератор не давал случайных чисел.
Dig386 писал(а): ↑Кстати, тот же стабилитрон в принципе можно запитать от блокинг-генератора, но я бы крепко подумал, можно ли такое к ноутбуку подключать, т.к. там могут быть импульсы с довольно высоким напряжением.
Вместо блокинг-генератора можно собрать умножитель напряжения на переключаемых конденсаторах. При кратности умножения 3, и напряжении питания 5 В, на выходе (с учётом потерь на диодах), получится около 12 В, этого должно быть достаточно. А выход можно защитить парой кремниевых диодов, соединённых встречно-параллельно. Но да, я бы такие эксперименты предпочёл делать на чём-нибудь автономном вроде Arduino, ESP32 или может быть, Raspberry Pi.
Dig386 писал(а): ↑Но для ГПСЧ общего назначения, т.е. просто "для расчётов", я простейшие проверки на равномерность распределения представляю себе куда более брутально:
Для библиотек общего назначения вроде glibc это наверное, разумный компромисс. Для спецприменений может понадобиться что-то другое, особым требованием может быть лимит по времени, или например, криптостойкость. А может быть, что-то ещё.
Хорошо помню, как писал на школьном компьютере программу на бейсике, которая "случайным" образом ставила точки на экране. Вместо "звёздного неба" они рисовала сплошные наклонные линии - такой там был ГПСЧ.
Dig386 писал(а): ↑Насколько мне известно, там используется конструкция, похожая на системный криптогенератор, т.е. алгоритмы Fortuna или Yarrow.
Почитал. Да, верно, AES в него входит, но это ещё не всё. Общий алгоритм действительно напоминает Фортуну.
Dig386 писал(а): ↑Но есть ещё rdseed, дающая возможность почти напрямую получить доступ к аппаратному ГСЧ, но она медленнее rdrand.
Эту мой процессор не поддерживает.
Dig386 писал(а): ↑Я ещё обратил внимание на то, что Вы получаете 32 бита от rdrand, хотя размер машинного слова на x86-64 - 64 бита. Не исключаю, что взять сразу 64 бита - это быстрее.
Попробовал. Действительно, rdrand64 выдаёт числа с той же скоростью, что и rdrand32, но 64-битные.