1
我想在JavaScript中生成6位数字的优惠券代码。JavaScript中的非重复伪随机数生成器
我想使用类似Preshing's algorithm之类的东西。
这是我到目前为止,
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>";
}
还有一个jsfiddle。
将其转换为JavaScript的自己吗?虽然在现实中,你所需要做的就是洗牌一个有序数组。见http://stackoverflow.com/questions/3746725/create-a-javascript-array-containing-1-n和http://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array -in的JavaScript。 –
你的一切都非常有帮助..对我来说,这似乎是一个有效的问题,它当然不会像洗牌阵列一样提出相同的问题。 OP发布的链接用于生成唯一的随机数字,而无需数组的开销。 – Keith
@obiwahn,..我刚刚从你的链接做了源代码的快速转换,它似乎工作正常。通过创建1000万个随机数进行测试,并检查是否有重复。如果这个问题被搁置,我可以在这里发帖。 – Keith