Module: Random::Hash

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

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

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!

rand_key()

Returns a random key.

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

[Source]

    # File lib/more/facets/random.rb, line 224
        def rand_key
          keys.at(Random.number(keys.size))
        end

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

[Source]

    # File lib/more/facets/random.rb, line 234
        def rand_key!
          k,v = rand_pair
          delete(k)
          return k
        end

rand_pair()

Returns a random key-value pair.

      {:one => 1, :two => 2, :three => 3}.pick  #=> [:one, 1]

[Source]

    # File lib/more/facets/random.rb, line 246
        def rand_pair
          k = rand_key
          return k, fetch(k)
        end

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

[Source]

    # File lib/more/facets/random.rb, line 257
        def rand_pair!
          k,v = rand_pair
          delete( k )
          return k,v
        end

rand_value()

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
        def rand_value
          fetch(rand_key)
        end

rand_value!()

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
        def rand_value!
          k,v = rand_pair
          delete( k )
          return v
        end

shuffle()

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
        def shuffle
          ::Hash.zipnew( keys.sort_by{Random.number}, values.sort_by{Random.number} )
        end

shuffle!()

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
        def shuffle!
          self.replace(shuffle)
        end

[Validate]