lib/open_classes/array/together_sample.rb
# encoding: utf-8
require 'open_classes/object'
require 'open_classes/module'
require 'open_classes/array/together_helper'
# Array
class Array
include TogetherHelper
# Arrays bulk sample.
#
# together_sample has alias :tsample
#
# not empty case
# lists = [[1, 2], [5, 6]]
# ret = lists.together_sample
# print ret # => [1 or 2, 5 or 6]
#
# empty case
# lists = [[], []]
# ret = lists.together_sample
# print ret # => [nil, nil]
#
# not empty case with args
# lists = [[1, 2], [5, 6]]
# ret = lists.together_sample 2
# print ret # => [[1 or 2, 1 or 2], [5 or 6, 5 or 6]]
#
# not empty case with args
# lists = [[], []]
# ret = lists.together_sample 2
# print ret # => [[], []]
#
# not empty, over size case with args
# lists = [[1, 2], [5, 6]]
# ret = lists.together_sample 3
# print ret # => [[1 or 2, 1 or 2], [5 or 6, 5 or 6]]
#
def together_sample(count = nil)
if_not_contain_array_rails_type_error
if count.nil?
reduce([]) { |ret, list|ret << list.sample }
else
reduce([]) { |ret, list|ret << list.sample(count) }
end
end
alias_method :tsample, :together_sample
end