Module Random::HashExtensions
In: lib/facets/standard/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/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}

[Source]

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

[Source]

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

[Source]

# 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

[Source]

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

[Source]

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

[Source]

# File lib/facets/standard/facets/random.rb, line 316
    def shuffle
      ::Hash.zip( keys.sort_by{Random.number}, values.sort_by{Random.number} )
    end

Destructive shuffle_hash. Arrange the values in a new random order.

  h = {:a => 1, :b => 2, :c => 3}
  h.shuffle!
  h  #~> {:b=>2, :c=>1, :a=>3}

[Source]

# File lib/facets/standard/facets/random.rb, line 327
    def shuffle!
      self.replace(shuffle)
    end

[Validate]