Module Random::ArrayExtensions
In: lib/more/facets/random.rb

Methods

at_rand   at_rand!   pick   pick!   rand_index   rand_subset   shuffle   shuffle!  

Public Instance methods

Return a random element from the array.

  [1, 2, 3, 4].at_rand           #~> 2
  [1, 2, 3, 4].at_rand           #~> 4

Same as at_rand, but acts in place removing a random element from the array.

  a = [1,2,3,4]
  a.at_rand!       #~> 2
  a                #~> [1,3,4]

Similar to at_rand, but will return an array of randomly picked exclusive elements if given a number.

Similar to at_rand!, but given a number will return an array of exclusive elements.

Returns a random subset of an Array. If a number of elements is specified then returns that number of elements, otherwise returns a random number of elements upto the size of the Array.

By defualt the returned values are exclusive of each other, but if exclusive is set to false, the same values can be choosen more than once.

When exclusive is true (the default) and the number given is greater than the size of the array, then all values are returned.

  [1, 2, 3, 4].rand_subset(1)        #~> [2]
  [1, 2, 3, 4].rand_subset(4)        #~> [2, 1, 3, 4]
  [1, 2, 3, 4].rand_subset           #~> [1, 3, 4]
  [1, 2, 3, 4].rand_subset           #~> [2, 3]

Randomize the order of an array.

  [1,2,3,4].shuffle  #~> [2,4,1,3]

As with shuffle but modifies the array in place. The algorithm used here is known as a Fisher-Yates shuffle.

  a = [1,2,3,4]
  a.shuffle!

  a  #~> [2,4,1,3]

CREDIT Niel Spring

[Validate]