Вам понадобится некоторое ведро для хранения значений в.
function rand(depth, m, inc, mod, bucket=[]) {
let nextStep = 2;
if(depth !== 0) {
nextStep = (m * rand(depth-1, m, inc, m, bucket) + inc) % mod;
}
bucket.push(nextStep);
return bucket;
}
// somewhere else
const generatedRandomValues = rand(a, b, c, d);
const randomValue = generatedRandomValues[-1];
пс. рассмотрите возможность использования промежуточных переменных, чтобы прояснить смысл кода (например, рассказать историю)