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

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
9d2f78236e45a335301ba1195026105d?d=identicon&s=25 unknown (Guest)
on 2014-12-04 02:13
(Received via mailing list)
Issue #4147 has been updated by Shyouhei Urabe.


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

進捗ダメです。

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

----------------------------------------
Feature #4147: Array#sample で重みを指定したい
https://bugs.ruby-lang.org/issues/4147#change-50276

* 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
This topic is locked and can not be replied to.