Feature #4247: New features for Array#sample, Array#choice
http://redmine.ruby-lang.org/issues/show/4247

Author: Yoji Ojima
Status: Open, Priority: Normal

We are planning to add the following features of the random sampling to Array.

1. Weighted random sampling.
2. Sampling with replacement.
3. Iteration.

It is discussed in ruby-dev (Feature #3647 and #4147).


API will be:

Array#sample([size, [opt]])
  - Random selection without replacement.
  - Returns a new array when size is specified.
  - opt:
      weight: proc or array
      random: Random instance

Array#choice([size, [opt]])
  - Random selection with replacement.
  - Returns a new array when size is specified.
  - opt: same as above.

Array#each_sample([opt])
  - Random selection iterator without replacement.
  - Choose a random element and yield it.
  - Returns an Enumerator if a block is not given.
  - opt: same as above.

Array#each_choice([opt])
  - Random selection iterator with replacement.
  - Choose a random element and yield it.
  - Returns an Enumerator if a block is not given.
  - opt: same as above.


Comments?


----------------------------------------
http://redmine.ruby-lang.org