[ruby-trunk - Feature #4147] Array#sample で重みを指定したい

Issue #4147 has been updated by Shyouhei U…

Yui NARUSE wrote:

わたしの知る限りでは進捗ないと思います。
うらべさん、あるいは他のどなたか何かありますか?

進捗ダメです。

このスレッドのコメント#1でも書きましたが実装があると話が大幅に進むことが多いので実装は大歓迎です。この議論は途中で話が大きくなったり小さくしようとしたりしてだいぶ混乱してしまったので、見通しをよくする意味でもコードがあったほうが助かります。


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

  • Author: Yoji Ojima
  • Status: Assigned
  • Priority: Normal
  • Assignee:
  • Category:
  • Target version: next minor

=begin
Array#sample にブロックを渡したとき、ブロックの戻り値を要素の重みとして使用するのはいかがでしょうか。

下記のサンプルで、“大吉” が “凶” の 1000 倍の確率で選択されるようにしたいです。

omikuji_box = [
{:name => “大吉”, :weight => 1000},
{:name => “中吉”, :weight => 100},
{:name => “小吉”, :weight => 10},
{:name => “凶”, :weight => 1}
]
omikuji = omikuji_box.sample {|v| v[:weight] }
puts omikuji[:name]
=end