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

**URL:** <https://www.ruby-forum.com/t/ruby-trunk-feature-4147-array-sample/233320>\
**Category:** Development\
**Created:** [December 4, 2014, 2:13am UTC](https://www.ruby-forum.com/t/ruby-trunk-feature-4147-array-sample/233320 "2014-12-04T02:13:59Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![addis\_a](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c4cdca/32.png) [@addis\_a](https://www.ruby-forum.com/u/addis_a)\
**Post date:** [December 4, 2014, 2:13am UTC](https://www.ruby-forum.com/t/ruby-trunk-feature-4147-array-sample/233320/1 "2014-12-04T02:13:59Z")

</div>

Issue #4147 has been updated by Shyouhei U…

Yui NARUSE wrote:

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

進捗ダメです。

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

* * *

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

> **[Feature #4147: Array#sample で重みを指定したい - Ruby master - Ruby Issue Tracking System](https://bugs.ruby-lang.org/issues/4147#change-50276)**
>
> Redmine

- 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
