У вас не может быть ошибки, связанной вообще. Либо ваш алгоритм работает, либо нет. Причина этого в том, что разумная граница ошибки, очевидно, намного меньше, чем RAND_MAX. Это, в свою очередь, означает, что младшие биты не так случайны, как старшие биты. Но хороший PRNG гарантирует, что все биты одинаково случайны.
Рассмотрим этот медленный, но математически обоснованный пример алгоритма ГСЧ:
int rand() {
state = AES_encrypt(state);
return state % RAND_MAX;
}
void srand(int seed) {
state = AES_encrypt(seed);
}
Если вы можете найти какую-либо существенную корреляцию между выходной последовательностью и предыдущим state
, алгоритм AES следует считать нарушенным.