[#42735] [Ruby 1.9-Feature#4147][Open] Array#sample で重みを指定したい — Yoji Ojima <redmine@...>

Feature #4147: Array#sample で重みを指定したい

52 messages 2010/12/10
[#42791] [Ruby 1.9-Feature#4147][Assigned] Array#sample で重みを指定したい — Shyouhei Urabe <redmine@...> 2010/12/18

チケット #4147 が更新されました。 (by Shyouhei Urabe)

[#42800] Re: [Ruby 1.9-Feature#4147][Assigned] Array#sample で重みを指定したい — Masaya TARUI <tarui@...> 2010/12/19

> じゃあ反対ないので実装はともかく、この仕様は基本入れる方向で考えましょう。反対の人は意思表示お早めに。

[#42763] [Ruby 1.9-Bug#4159][Open] test_block_variables(TestRipper::ParserEvents) が失敗する — Kouhei Yanagita <redmine@...>

Bug #4159: test_block_variables(TestRipper::ParserEvents) が失敗する

8 messages 2010/12/14

[#42894] [Ruby 1.8-Feature#4207][Open] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには — Shyouhei Urabe <redmine@...>

Feature #4207: これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには

24 messages 2010/12/26
[#42935] Re: [Ruby 1.8-Feature#4207][Open] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには — Kenta Murata <muraken@...> 2011/01/04

むらたです。

[#42936] Re: [Ruby 1.8-Feature#4207][Open] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには — Kenta Murata <muraken@...> 2011/01/05

むらたです。

[ruby-dev:42741] [Ruby 1.9-Feature#4147] Array#sample で重みを指定したい

From: Yoji Ojima <redmine@...>
Date: 2010-12-10 13:58:39 UTC
List: ruby-dev #42741
チケット #4147 が更新されました。 (by Yoji Ojima)


メソッドの引数を考慮しない簡易的なコードでよろしければ。

class Array
  alias :org_sample :sample

  def sample
    if block_given?
      prob_map = collect {|v| yield(v) }
      rn = rand * prob_map.inject(0) {|r, v| r += v }
      prob_map.each_with_index do |v, i|
        rn -= v
        return self[i] if rn < 0
      end
    else
      org_sample
    end
  end
end
----------------------------------------
http://redmine.ruby-lang.org/issues/show/4147

----------------------------------------
http://redmine.ruby-lang.org

In This Thread