class ActiveRecord::Relation

Constants

BETA
EPS

Public Instance Methods

compute_elastic_sensitivity(c, k, k_square, n) click to toggle source
# File lib/rails_elastic_sensitivity.rb, line 93
def compute_elastic_sensitivity(c, k, k_square, n)
  max = 0
  n = 0 if k_square == 0 # MAX value is when k == 0

  (0..n).each do |i|
    temp = (Math::E ** (-BETA*i)) * ((k_square * i **2 ) + (i * k) + c )
    max = temp if temp > max
  end

  max
end
elastic_count() click to toggle source
# File lib/rails_elastic_sensitivity.rb, line 84
def elastic_count
  es = Rails.cache.read("now_es")
  ture_result = self.count
  n = es.main_t.count
  elastic_sensitivity = compute_elastic_sensitivity(es.c, es.k, es.k_square, n)
  laplace_noise_scale = (2 * elastic_sensitivity) / EPS
  (ture_result + laplace(laplace_noise_scale)).abs
end
laplace(scale) click to toggle source
# File lib/rails_elastic_sensitivity.rb, line 105
def laplace(scale)
  u = 0.5 - rand(0.0..1.0)
  -(u <=> 0.0) * scale * Math.log(1 - (2 * (u).abs))
end