Module: Quartiles
- Defined in:
- lib/tlsh/quartiles.rb
Overview
Buckets provides utility computation methods for computation of quartile statistics
Constant Summary collapse
- EFF_BUCKETS =
128
Class Method Summary collapse
Class Method Details
.quartile_points(buckets) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/tlsh/quartiles.rb', line 6 def quartile_points(buckets) spl = spr = 0 q1 = 0 p1 = EFF_BUCKETS / 4 - 1 p2 = EFF_BUCKETS / 2 - 1 p_end = EFF_BUCKETS - 1 buckets_cpy = buckets.dup[0..EFF_BUCKETS] cut_left = [] cut_right = [] l = 0 r = p_end loop do ret = partition(buckets_cpy, l, r) if ret > p2 r = ret - 1 cut_right[spr] = ret spr += 1 elsif ret < p2 l = ret + 1 cut_left[spl] = ret spl += 1 else q1 = buckets_cpy[p2] break end end cut_left[spl] = p2 - 1 cut_right[spr] = p2 + 1 q2 = get_q2(buckets_cpy, cut_left, spl, p1) q3 = get_q3(buckets_cpy, cut_right, spr, p_end) [q1, q2, q3] end |