Module | Random::Hash |
In: |
lib/more/facets/random.rb
|
Returns a random key.
{:one => 1, :two => 2, :three => 3}.pick_key #=> :three
# File lib/more/facets/random.rb, line 224 224: def rand_key 225: keys.at(Random.number(keys.size)) 226: 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}
# File lib/more/facets/random.rb, line 234 234: def rand_key! 235: k,v = rand_pair 236: delete(k) 237: return k 238: end
Returns a random key-value pair.
{:one => 1, :two => 2, :three => 3}.pick #=> [:one, 1]
# File lib/more/facets/random.rb, line 246 246: def rand_pair 247: k = rand_key 248: return k, fetch(k) 249: 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/more/facets/random.rb, line 257 257: def rand_pair! 258: k,v = rand_pair 259: delete( k ) 260: return k,v 261: 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/more/facets/random.rb, line 270 270: def rand_value 271: fetch(rand_key) 272: 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 280: def rand_value! 281: k,v = rand_pair 282: delete( k ) 283: return v 284: 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 297: def shuffle 298: ::Hash.zipnew( keys.sort_by{Random.number}, values.sort_by{Random.number} ) 299: end