文章にするのは非常に難しいですが、順番だけランダムにして一巡させるような場合の実装です。
JavaScript
function Lottery(length) { this._length = length; this._pod = []; this.reset(length); } Lottery.prototype.reset = function(length) { var i = 0; for (; i < length; i++) { this._pod.push(i); } }; Lottery.prototype.select = function() { var pod = this._pod, num = pod.splice(Math.random() * pod.length | 0, 1)[0]; if (!pod.length) { this.reset(this._length); } return num; };
こんな感じで実装しています。
つかいかた
var lottery = new Lottery(5); lottery.select();
引数にいくつの数字から抽選するかを渡して、selectメソッドを叩くとランダムに数字が抽選されます。
上記例では 0 〜 4 の 5つの数字からランダムに、かつ一巡するまでは重複することなく数字を抽選します。