Skip to content

Instantly share code, notes, and snippets.

@delano
Forked from antirez/gist:280994
Created January 19, 2010 15:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save delano/281000 to your computer and use it in GitHub Desktop.
Save delano/281000 to your computer and use it in GitHub Desktop.
# Power law (log tail) distribution
# Copyright(C) 2010 Salvatore Sanfilippo
# this code is under the public domain
# min and max are both inclusive
# n is the distribution power: the higher, the more biased
def powerlaw(min,max,n)
max += 1
pl = ((max**(n+1) - min**(n+1))*rand() + min**(n+1))**(1.0/(n+1))
max-1-pl.to_i
end
freq = {}
100000.times {
n = powerlaw(0,100,2).to_i
freq[n] = 0 if !freq[n]
freq[n] += 1
}
(0..100).each{|x|
puts "#{x} => #{freq[x]}"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment