2011-12-04から1日間の記事一覧

重み付きランダム選択アルゴリズムを考えてみる

200回ぐらい回せば大体、Weightに従って分布してくる…と思う。 def wrr(addr_weights, n) addrs = [] ary = [] addr_weights.each do |a, w| w.times { ary << a } end ary = ary.sort_by{ rand } loop do addrs << ary.shift addrs.uniq! if addrs.size >= …