From: hsbt@... Date: 2016-11-21T04:59:19+00:00 Subject: [ruby-dev:49885] [Ruby trunk Feature#4147][Feedback] Array#sample で重みを指定したい Issue #4147 has been updated by Hiroshi SHIBATA. Status changed from Assigned to Feedback ---------------------------------------- Feature #4147: Array#sample で重みを指定したい https://bugs.ruby-lang.org/issues/4147#change-61599 * Author: Yoji Ojima * Status: Feedback * Priority: Normal * Assignee: ---------------------------------------- =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 -- https://bugs.ruby-lang.org/