Sha256: 7b4537682a68e1ff1d852af42bca78fd876295cbec9c7d80f209755f777a6752

Contents?: true

Size: 702 Bytes

Versions: 4

Compression:

Stored size: 702 Bytes

Contents

module Enumerable

  # Generates a hash mapping each unique element in the array
  # to the relative frequency, i.e. the probablity, of
  # it appearence.
  #
  #   CREDIT: Brian Schröder

  def probability
    probs = Hash.new(0.0)
    size = 0.0
    each do | e |
      probs[e] += 1.0
      size += 1.0
    end
    probs.keys.each{ |e| probs[e] /= size }
    probs
  end

  # old def
  #
  #   def probability
  #     arr = self.to_a
  #     probHash = Hash.new
  #     size = arr.size.to_f
  #     arr.uniq.each do |i|
  #       ct = arr.inject(0) do |mem,obj|
  #         obj.eql?(i) ? (mem+1) : mem
  #       end
  #       probHash[i] = ct.to_f/size
  #     end
  #     probHash
  #   end

end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
facets-2.4.3 lib/core/facets/enumerable/probability.rb
facets-2.4.4 lib/core/facets/enumerable/probability.rb
facets-2.4.5 lib/core/facets/enumerable/probability.rb
mack-facets-0.8.2 lib/gems/facets-2.4.5/lib/core/facets/enumerable/probability.rb