Module: Random::Hash
- Defined in:
- lib/gems/facets-2.4.5/lib/more/facets/random.rb
Instance Method Summary collapse
-
#rand_key ⇒ Object
Returns a random key.
-
#rand_key! ⇒ Object
(also: #pick_key)
Delete a random key-value pair, returning the key.
-
#rand_pair ⇒ Object
Returns a random key-value pair.
-
#rand_pair! ⇒ Object
(also: #pick_pair)
Deletes a random key-value pair and returns that pair.
-
#rand_value ⇒ Object
(also: #at_rand)
Returns a random hash value.
-
#rand_value! ⇒ Object
(also: #pick, #at_rand!)
Deletes a random key-value pair and returns the value.
-
#shuffle ⇒ Object
Returns a copy of the hash with values arranged in new random order.
-
#shuffle! ⇒ Object
Destructive shuffle_hash.
Instance Method Details
#rand_key ⇒ Object
Returns a random key.
{:one => 1, :two => 2, :three => 3}.pick_key #=> :three
224 225 226 |
# File 'lib/gems/facets-2.4.5/lib/more/facets/random.rb', line 224 def rand_key keys.at(Random.number(keys.size)) end |
#rand_key! ⇒ Object Also known as: pick_key
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}
234 235 236 237 238 |
# File 'lib/gems/facets-2.4.5/lib/more/facets/random.rb', line 234 def rand_key! k,v = rand_pair delete(k) return k end |
#rand_pair ⇒ Object
Returns a random key-value pair.
{:one => 1, :two => 2, :three => 3}.pick #=> [:one, 1]
246 247 248 249 |
# File 'lib/gems/facets-2.4.5/lib/more/facets/random.rb', line 246 def rand_pair k = rand_key return k, fetch(k) end |
#rand_pair! ⇒ Object Also known as: pick_pair
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}
257 258 259 260 261 |
# File 'lib/gems/facets-2.4.5/lib/more/facets/random.rb', line 257 def rand_pair! k,v = rand_pair delete( k ) return k,v end |
#rand_value ⇒ Object Also known as: at_rand
Returns a random hash value.
{:one => 1, :two => 2, :three => 3}.rand_value #=> 2
{:one => 1, :two => 2, :three => 3}.rand_value #=> 1
270 271 272 |
# File 'lib/gems/facets-2.4.5/lib/more/facets/random.rb', line 270 def rand_value fetch(rand_key) end |
#rand_value! ⇒ Object Also known as: pick, at_rand!
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}
280 281 282 283 284 |
# File 'lib/gems/facets-2.4.5/lib/more/facets/random.rb', line 280 def rand_value! k,v = rand_pair delete( k ) return v end |
#shuffle ⇒ Object
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}
297 298 299 |
# File 'lib/gems/facets-2.4.5/lib/more/facets/random.rb', line 297 def shuffle ::Hash.zipnew( keys.sort_by{Random.number}, values.sort_by{Random.number} ) end |
#shuffle! ⇒ Object
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}
308 309 310 |
# File 'lib/gems/facets-2.4.5/lib/more/facets/random.rb', line 308 def shuffle! self.replace(shuffle) end |