From d4e1d4e94e866d498ead1f370236df216917a6c7 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sun, 26 Jan 2020 18:34:18 +0900 Subject: Moved Array#sample to rbinc --- array.rb | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'array.rb') diff --git a/array.rb b/array.rb index ed5779290f..25da88cde8 100755 --- a/array.rb +++ b/array.rb @@ -33,4 +33,31 @@ class Array def shuffle(random: Random) __builtin_rb_ary_shuffle(random); end + + # call-seq: + # ary.sample -> obj + # ary.sample(random: rng) -> obj + # ary.sample(n) -> new_ary + # ary.sample(n, random: rng) -> new_ary + # + # Choose a random element or +n+ random elements from the array. + # + # The elements are chosen by using random and unique indices into the array + # in order to ensure that an element doesn't repeat itself unless the array + # already contained duplicate elements. + # + # If the array is empty the first form returns +nil+ and the second form + # returns an empty array. + # + # a = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] + # a.sample #=> 7 + # a.sample(4) #=> [6, 4, 2, 5] + # + # The optional +rng+ argument will be used as the random number generator. + # + # a.sample(random: Random.new(1)) #=> 6 + # a.sample(4, random: Random.new(1)) #=> [6, 10, 9, 2] + def sample(n = (ary = false), random: Random) + __builtin_rb_ary_sample(random, n, ary) + end end -- cgit v1.2.3