Methods
at_rand
at_rand!
pick
pick_key
pick_pair
rand_key
rand_key!
rand_pair
rand_pair!
rand_value
rand_value!
shuffle
shuffle!
Public Instance methods
Alias for rand_value
Alias for rand_value!
Alias for rand_value!
Alias for rand_key!
Alias for rand_pair!
Returns a random key.
{:one => 1, :two => 2, :three => 3}.pick_key #=> :three
[ + ]
# File lib/more/facets/random.rb, line 224 def rand_key keys.at(Random.number(keys.size)) end
Delete a random key-value pair, returning the key.
a = {:one => 1, :two => 2, :three => 3} a.pick_key! #=> :two a #=> {:one => 1, :three => 3}
This method is also aliased as
pick_key
[ + ]
# File lib/more/facets/random.rb, line 234 def rand_key! k,v = rand_pair delete(k) return k end
Returns a random key-value pair.
{:one => 1, :two => 2, :three => 3}.pick #=> [:one, 1]
[ + ]
# File lib/more/facets/random.rb, line 246 def rand_pair k = rand_key return k, fetch(k) end
Deletes a random key-value pair and returns that pair.
a = {:one => 1, :two => 2, :three => 3} a.rand_pair! #=> [:two, 2] a #=> {:one => 1, :three => 3}
This method is also aliased as
pick_pair
[ + ]
# File lib/more/facets/random.rb, line 257 def rand_pair! k,v = rand_pair delete( k ) return k,v end
Returns a random hash value.
{:one => 1, :two => 2, :three => 3}.rand_value #=> 2 {:one => 1, :two => 2, :three => 3}.rand_value #=> 1
This method is also aliased as
at_rand
[ + ]
# File lib/more/facets/random.rb, line 270 def rand_value fetch(rand_key) end
Deletes a random key-value pair and returns the value.
a = {:one => 1, :two => 2, :three => 3} a.at_rand! #=> 2 a #=> {:one => 1, :three => 3}
[ + ]
# File lib/more/facets/random.rb, line 280 def rand_value! k,v = rand_pair delete( k ) return v end
Returns a copy of the hash with values arranged in new random order.
h = {:a=>1, :b=>2, :c=>3} h.shuffle_hash #=> {:b=>2, :c=>1, :a>3}
[ + ]
# File lib/more/facets/random.rb, line 297 def shuffle ::Hash.zipnew( keys.sort_by{Random.number}, values.sort_by{Random.number} ) end
Destructive shuffle_hash. Arrange the values in a new random order.
h = {:a => 1, :b => 2, :c => 3} h.shuffle_hash! h #=> {:b=>2, :c=>1, :a=>3}
[ + ]
# File lib/more/facets/random.rb, line 308 def shuffle! self.replace(shuffle) end