а ещё я подумал, что я скорее всего сильно дохрена о себе возомнил, и выпиливать из бложека особо и нечего, тут все равно в основном неинтересное говно написано. Гм...

В продолжение #2513200 и #2514081
Решил накатать бенчмарк: gist.github.com
Собственно вопрос скорее по адекватности бенчмарка. Там есть вызов функции без IO (genSys и genAes), так вот их результаты не зависят от размера списка. Т.е. я явно что-то не так делаю. Возможно, критерион не так готовлю.
Посмотрите плз.

В продолжение #2513200.
А для hackage.haskell.org генератора код из gist.github.com работает как ожидается.
Посмотрел я на реализацию Crypto.PubKey.DSA.sign — она использует, в итоге, withRandomBytes, а она, в свою очередь, cprgGenerate.
Собственно отсюда следует, что не стоит полагаться на реализацию SystenRNG, т.е. лучше вернуть IORef с генератором.

Господа гляньте плз код gist.github.com . Если расскомментить 14 строку и закоментить 13-ю вывод не измениться. Кажется ли это вам нормальным?
Собственно есть библитека Crypto.Random hackage.haskell.org замечательного параноика Vincent Hanquez . Он её запилил на замену своей же Crypto.Random.API . С предыдущей версией я просто хранил глобально IORef на какой-то системный инстанс CPRG и в ус не дул, просто подменял при использовании старый генератор на новый. Сейчас же появился EnthropyPool который держит байтстринг и MVar с текущей позицией в нём и каждый раз при вызове генератора обновляет этот MVar. При таком раскладе можно просто хранить глобальный EnthropyPool . Это здорово, но меня как-то напрягает смена подхода без смены интерфейса. Нафига тогда генератор возвращать?
ЗЫ Винсенту я уже написал, он пока молчит. Хочется знать ваше мнение.

Жуйк, а как правильно генерировать случайные числа в си? Я делаю так:
int r;
asm("rdtsc" : "=A"(r)); // кол-во тактов процессора
srand (r);

Переинициализировать srand() нужно перед каждым вызовом rand() или достаточно 1 раза в программе/функции?

Услышал тут кусок телевизора. Там какой-то дядька правоохранительный сказал, что "ЕСТЬ ТАКАЯ ПРОГРАММА ТОР ЧЕРЕЗ НЕЕ МОЖНО КУПИТЬ ПИСТОЛЕТ ПО ЗАПЧАСТЯМ ПРИЕДЕТ НИКТО НЕ УЗНАЕТ".
Вот какой преступный Тор.

> This is not an abstract, academic concern to me. I'm starting a new open source web project with the goal of making the code as freely and easily runnable to the world as possible. Despite the serious problems with PHP, I was forced to consider it. If you want to produce free-as-in-whatever code that runs on virtually every server in the world with zero friction or configuration hassles, PHP is damn near your only option. If that doesn't scare you, then check your pulse, because you might be dead.Sad but true