Module | Random::HashExtensions |
In: |
lib/facets/standard/facets/random.rb
|
Returns a random key.
{:one => 1, :two => 2, :three => 3}.pick_key #~> :three
# File lib/facets/standard/facets/random.rb, line 243 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.rand_key! #~> :two a #~> {:one => 1, :three => 3}
# File lib/facets/standard/facets/random.rb, line 253 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/facets/standard/facets/random.rb, line 265 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}
# File lib/facets/standard/facets/random.rb, line 276 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
# File lib/facets/standard/facets/random.rb, line 289 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/facets/standard/facets/random.rb, line 299 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 #~> {:b=>2, :c=>1, :a>3}
# File lib/facets/standard/facets/random.rb, line 316 def shuffle ::Hash.zip( keys.sort_by{Random.number}, values.sort_by{Random.number} ) end