Линейные конгруэнтные генераторы слишком просты, чтобы быть надежными, поэтому были разработаны более сложные варианты. В качестве примера можно назвать вихрь Мерсенна, который придумал Макото Мацумото в 1997 году. Такой генератор наверняка есть у многих из вас, потому что он используется в десятках стандартных программных пакетов, в том числе в Microsoft Excel. В вихре Мерсенна сочетаются простые числа, благодаря которым математика упрощается, и симпатичные двоичные выражения, упрощающие вычисления. Простое число Мерсенна — это число вида 2p – 1 (где p — простое число), такое как 31 = 25–1 или 131 071 = 217–1. Простые числа Мерсенна встречаются редко, и мы даже не знаем, бесконечно ли их количество. В январе 2021 года было известно ровно 51 простое число Мерсенна, самое большое из которых равно 282 589 933–1.
В двоичном виде два простых числа Мерсенна выглядят так:
31 = 11111
131 071 = 11111111111111111
и представляют собой 5 и 17 единиц соответственно. Это позволяет цифровому компьютеру легко оперировать ими при вычислениях. Вихрь Мерсенна основан на каком-нибудь очень большом простом числе Мерсенна, обычно 219 937–1, и он заменяет числа в сравнениях матрицами над полем с элементами 0 и 1. Этот метод удовлетворяет тестам для подстрок длиной вплоть до 623 бит.