Обычный ответ на этот тип вопроса (зачем использовать только N битов самого низкого порядка?) Заключается в том, что он предотвращает утечку слишком большого количества информации о внутреннем состоянии PRNG.
Если вы дадите атакующему ваше полное состояние X_n в двух последовательных состояниях, они могут легко (?) Определить модуль и, таким образом, вычислить все будущие состояния PRNG.
То есть, учитывая значения a = X_n и b = X_ (n + 1), злоумышленнику нужно только найти M, такое что b = a ^ 2 mod M. Пока a ^ 2 больше, чем M, я думаю, что это должно быть легко сделать. Если M больше, чем ^ 2, то b = a ^ 2, и атакующий должен продолжать спрашивать цифры, пока модуль не вступит в игру.