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

Methods

Public Instance methods

at_rand()

Alias for rand_value

at_rand!()

Alias for rand_value!

pick()

Alias for rand_value!

pick_key()

Alias for rand_key!

pick_pair()

Alias for rand_pair!

Returns a random key.

  {:one => 1, :two => 2, :three => 3}.pick_key  #=> :three

[Source]

     # 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}

[Source]

     # 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]

[Source]

     # 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}

[Source]

     # 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

[Source]

     # 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}

[Source]

     # 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}

[Source]

     # 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

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}

[Source]

     # File lib/more/facets/random.rb, line 308
308:     def shuffle!
309:       self.replace(shuffle)
310:     end

[Validate]