Project

General

Profile

Feature #4247

New features for Array#sample, Array#choice

Added by oj (Yoji Ojima) over 9 years ago. Updated over 2 years ago.

Status:
Assigned
Priority:
Normal
Target version:
-
[ruby-core:34214]

Description

=begin
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?
=end


Related issues

Related to Ruby master - Feature #3647: Array#sample(n, replace=false)Feedbackmrkn (Kenta Murata)Actions
Related to Ruby master - Feature #4147: Array#sample で重みを指定したいFeedbackActions

Also available in: Atom PDF