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