I want to generate 6-digit numeric coupon codes in JavaScript.
I'd like to use something like Preshing's algorithm.
This is what I have so far,
const p = 1000003;
function permuteQPR(x) {
  const residue = x * x % p;
  return (x <= p/2) ? residue : p - residue;
}
function next() {
  return permuteQPR(
    (permuteQPR(m_index++) + m_intermediateOffset) ^ 0x5bf03635
  );
};
const seedBase = 123456;
const seedOffset = 44;
m_index = permuteQPR(permuteQPR(seedBase) + 0x682f0161);
m_intermediateOffset = permuteQPR(
  permuteQPR(seedOffset) + 0x46790905
);
for (i = 0; i < 20; i++) {
  document.body.innerHTML += ('000000' + next()).substr(-6) + "<br>";
}
There is also a jsfiddle.
 
    