せっかく書いたのでバイナリサーチ版のっけときます。 http://jsfiddle.net/t58Vv/6/ // algorithm - 重みをつけて乱択する http://blog.livedoor.jp/dankogai/archives/51761113.html // バイナリサーチ版 var make_random_picker = function(picks){ var i, l = picks.length, t = 0, choices = picks.concat(); for (i = 0; i < l; ++i) { choices[i][1] = (t += choices[i][1]); } for (i = 0; i < l; ++i) { choices[i][1] /= t; } return function() { var r = Math.rand