24 lines
402 B
Crystal
24 lines
402 B
Crystal
def s_or_n_creator (n, t : T.class) forall T
|
|
arr = Array(T).new(n)
|
|
i = 0
|
|
->(item : T) {
|
|
i += 1
|
|
if i <= n
|
|
arr << item
|
|
elsif rand(i) < n
|
|
arr[rand(n)] = item
|
|
end
|
|
arr
|
|
}
|
|
end
|
|
|
|
buckets = Array.new(10, 0)
|
|
100_000.times do
|
|
s_or_n = s_or_n_creator 3, Int32
|
|
(0...9).each do |i|
|
|
s_or_n.call i
|
|
end
|
|
s_or_n.call(9).each do |i| buckets[i] += 1 end
|
|
end
|
|
|
|
puts buckets
|