[#42672] [Ruby 1.9-Bug#4110][Open] ホスト名の先頭が数字であるとき、WEBrickのテストでErrorが出る — Kouhei Yanagita <redmine@...>
Bug #4110: =E3=83=9B=E3=82=B9=E3=83=88=E5=90=8D=E3=81=AE=E5=85=88=E9=A0=AD=
[#42684] [Ruby 1.9-Bug#4120][Assigned] 2 failures on test/mkmf/test_convertible.rb — Usaku NAKAMURA <redmine@...>
Bug #4120: 2 failures on test/mkmf/test_convertible.rb
なかだです。
こんにちは、なかむら(う)です。
[#42692] [Feature: trunk] String#encode(:fallback) should accept default handler — SASADA Koichi <ko1@...>
ささだです.
[#42701] 1.9.x release and trunk branch policy — Yusuke ENDOH <mame@...>
まつもとさん、Yugui さん
[#42730] [Ruby 1.9-Bug#4143][Open] warning: "SUPPORT_JOKE" is not defined — Kazuhiro NISHIYAMA <redmine@...>
Bug #4143: warning: "SUPPORT_JOKE" is not defined
チケット #4143 が更新されました。 (by Kazuhiro NISHIYAMA)
2010年12月10日22:38 Kazuhiro NISHIYAMA <redmine@ruby-lang.org>:
(2010/12/10 23:49), KOSAKI Motohiro wrote:
[#42735] [Ruby 1.9-Feature#4147][Open] Array#sample で重みを指定したい — Yoji Ojima <redmine@...>
Feature #4147: Array#sample で重みを指定したい
チケット #4147 が更新されました。 (by Shyouhei Urabe)
> じゃあ反対ないので実装はともかく、この仕様は基本入れる方向で考えましょう。反対の人は意思表示お早めに。
Yuguiです。
2010年12月19日21:15 Yugui <yugui@yugui.jp>:
チケット #4147 が更新されました。 (by Yoji Ojima)
遠藤です。
チケット #4147 が更新されました。 (by Yoji Ojima)
[#42758] [Ruby 1.9-Bug#4157][Open] test_pty で、たまに出る Failure — Makoto Kishimoto <redmine@...>
Bug #4157: test_pty で、たまに出る Failure
[#42763] [Ruby 1.9-Bug#4159][Open] test_block_variables(TestRipper::ParserEvents) が失敗する — Kouhei Yanagita <redmine@...>
Bug #4159: test_block_variables(TestRipper::ParserEvents) が失敗する
[#42778] BasicObject#object_id — keiju@... (Keiju ISHITSUKA)
けいじゅ@いしつかです.
[#42782] [Ruby 1.9-Feature#4165][Open] win32ビルドでbaserubyを設定しなかったときのエラーが非常に不親切 — Motohiro KOSAKI <redmine@...>
Feature #4165: win32=E3=83=93=E3=83=AB=E3=83=89=E3=81=A7baseruby=E3=82=92=
[#42832] [Ruby 1.9-Bug#4178][Open] test/rubygems/gemutilities.rb で、よくわからない ArgumentError — Makoto Kishimoto <redmine@...>
Bug #4178: test/rubygems/gemutilities.rb で、よくわからない ArgumentError
[#42869] [feature:trunk] option for Socket#sendmsg — Nobuyoshi Nakada <nobu@...>
なかだです。
2010年12月23日21:01 Nobuyoshi Nakada <nobu@ruby-lang.org>:
[#42887] [Ruby 1.9-Feature#4204][Open] IO#advise should raise error for unknown symbol — Tomoyuki Chikanaga <redmine@...>
Feature #4204: IO#advise should raise error for unknown symbol
[#42893] [Ruby 1.8-Bug#4206][Open] failed to set ext option for win32/configure.bat — Akio Tajima <redmine@...>
Bug #4206: failed to set ext option for win32/configure.bat
[#42894] [Ruby 1.8-Feature#4207][Open] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには — Shyouhei Urabe <redmine@...>
Feature #4207: これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには
むらたです。
むらたです。
2011/1/5 Kenta Murata <muraken@gmail.com>:
こんにちは、なかむら(う)です。
チケット #4207 が更新されました。 (by Shyouhei Urabe)
チケット #4207 が更新されました。 (by Akinori MUSHA)
[ruby-dev:42864] Re: [Ruby 1.9-Feature#4147][Open] Array#sample で重みを指定したい
遠藤です。
議論が大分入り組んで来たので、一旦現在の API とその実装の案を
まとめてみました。sample_each は each_sample に改名してます。
Array#sample([size, [opt]])
- API
- size が省略されたら 1 つサンプリングして返す
- size が与えられたら size 分だけ非復元抽出して配列で返す
- opt の意味:
weight: proc or array
random: Random instance
- 実装
- weight が省略されたら現在の実装と同じ
- weight が与えられたら akr さんの方法 [ruby-dev:42844]
Array#choice([size, [opt]])
- API
- size が省略されたら 1 つサンプリングして返す
- size が与えられたら size 分だけ復元抽出して配列で返す
- opt は Array#sample と同じ
- 実装
- 乱数選択を size 回繰り返すだけ (weight が与えられたら考慮する)
- Walker's alias method は使わない (size が小さい時は不利になる
し、size が大きい場合だけ使うのも乱数の再現性が壊れるからダメ)
Array#each_sample([opt])
- API
- サンプリングして yield を繰り返す (全部サンプリングしたら終了)
- ブロックを省略したら Enumerator を返す
- opt は Array#sample と同じ
- 実装
- weight が省略されたら現在の実装と似た感じ
- weight が与えられたら akr さんの方法 (ちょっと非効率になる?)
Array#each_choice([opt])
- API
- サンプリングして yield を無限に繰り返す
- ブロックを省略したら Enumerator を返す
- opt は Array#sample と同じ
- 実装
- weight が省略されたら乱数選択を無限に繰り返す
- weight が与えられたら Walker's alias method を無限に繰り返す
それぞれの例
- %(大吉 中吉 小吉 凶).sample #=> 等確率にどれか
- %(大吉 中吉 小吉 凶).sample(4) #=> shuffle と同じ
- %(大吉 中吉 小吉 凶).sample(weight: [1000, 100, 10, 1])
#=> 重み付きでどれか (大吉が出やすい)
- %(大吉 中吉 小吉 凶).sample(4, weight: [1000, 100, 10, 1])
#=> 重み付きでどれか、の配列 (["大吉", "中吉", "小吉", "凶"] が最も出やすい)
- %(大吉 中吉 小吉 凶).sample(4, weight: proc {|x| ... } )
#=> 重み付きでどれか、の配列 (重みは proc が返した値)
- %(大吉 中吉 小吉 凶).choice #=> 等確率にどれか
- %(大吉 中吉 小吉 凶).choice(4) #=> choice を 4 回繰り返すのに相当
- %(大吉 中吉 小吉 凶).choice(weight: [1000, 100, 10, 1])
#=> 重み付きでどれか (大吉が出やすい)
- %(大吉 中吉 小吉 凶).choice(4, weight: [1000, 100, 10, 1])
#=> 重み付きでどれか、の配列 (["大吉", "大吉", "大吉", "大吉"] が最も出やすい)
- %(大吉 中吉 小吉 凶).each_sample.first #=> sample と同じ
- %(大吉 中吉 小吉 凶).each_sample.to_a #=> shuffle と同じ
- %(大吉 中吉 小吉 凶).each_sample(weight: [1000, 100, 10, 1]).take(4)
#=> 重み付きでどれか、の配列 (["大吉", "中吉", "小吉", "凶"] が最も出やすい)
- %(大吉 中吉 小吉 凶).each_choice.first #=> choice と同じ
- %(大吉 中吉 小吉 凶).each_choice.to_a #=> choice(4) と同じ
- %(大吉 中吉 小吉 凶).each_choice(weight: [1000, 100, 10, 1]).take(4)
#=> 重み付きでどれか、の配列 (["大吉", "大吉", "大吉", "大吉"] が最も出やすい)
--
Yusuke Endoh <mame@tsg.ne.jp>