Что ж, один миг при внедрении показал бы, что у него не может быть никаких причин для такого утверждения вообще.Зачем?Потому что так выглядит функция set seed:
synchronized public void setSeed(long seed) {
seed = (seed ^ multiplier) & mask;
this.seed.set(seed);
haveNextNextGaussian = false;
}
И это именно то, что вызывается из конструктора.Так что даже если вы дадите ему простое число, оно все равно не будет его использовать, поэтому, если вам вообще придется использовать начальное число s, где (s ^ multiplier) & mask дает простое число;)
В Java используется обычный метод линейного сравнения, а именно:
x_n + 1 = (a * x_n + c) mod m с 2 <= a <m;0 <= c <m. </p>
Поскольку вы хотите получить максимальный период, c и m должны быть относительно простыми и иметь несколько других довольно неясных ограничений, а также несколько советов, как получить практически полезную версию.Кнут, очевидно, подробно описывает это в части 2;)
Но, во всяком случае, семя вообще не влияет на качества генератора.Даже если бы в реализации использовался генератор Лемера, он, очевидно, удостоверился бы, что N простое число (в противном случае алгоритм практически бесполезен и не распределено равномерно, если все случайные значения должны быть взаимно простыми с не простыми ставками NI), чтоспорный вопрос