![]() |
eXeL@B —› Программирование —› Небольшой TrueRNG v2.0 |
Посл.ответ | Сообщение |
|
Создано: 29 января 2013 21:09 · Личное сообщение · #1 Продолжение топика https://ssl.exelab.ru/f/action=vthread&forum=6&topic=20695 Вторая версия алгоритма в которой решены почти все существующие проблемы. Проходит статтесты на виртуалках (кроме детерминированных эмуляторов вроде Bochs), проходит корреляционные тесты при одновременном запуске множества копий, работает надежно на всем доступном мне железе (в том числе на процессорах в которых TSC увеличивается кратно). Минусы - скорость генерации снижена, генерация может завершиться ошибкой. Code:
З.Ы. перед генерацией не забываем вызвать timeBeginPeriod(1), иначе всё будет совсем медленно. ----- PGP key ![]() |
|
Создано: 30 января 2013 05:23 · Личное сообщение · #2 |
|
Создано: 30 января 2013 06:31 · Личное сообщение · #3 DrGolova пишет: Йа дебил - объясните мне, зачем это нужно? Просто для интереса. Попытка сделать как можно более простой "чистый" ГСЧ не требующий ввода внешних данных. Для практических задач малопригодно, ибо там рулят криптостойкие ГПСЧ с подмешиванием энтропии из многих источников. DrGolova пишет: Производные XorShift'а по определению не криптостойкие генераторы, сколько бы туда не вмешивались rdtsc Так суть в том, что это ГСЧ а не ГПСЧ. Следующий генерируемый бит никак не зависит от предыдущих (у ГСЧ нет состояния). Вся магия функции extractBit нужна лишь для свертки 32 бит в 1 при неизвестном (и предположительно неслучайном) распределении исходных данных. Энтропию этот алгоритм берет из джиттера между системным таймером и тактовой частотой процессора (этот эффект есть как на железе так и в виртуалках, за одним единственным исключением - Bochs). ----- PGP key ![]() |
![]() |
eXeL@B —› Программирование —› Небольшой TrueRNG v2.0 |