with javascript_semantics function s_of_n(integer i, sequence samples, integer item) samples = deep_copy(samples) integer n = length(samples) i += 1 if i<=n then samples[i] = item elsif n/i>rnd() then samples[rand(n)] = item end if return {{i,samples},samples} end function function s_of_n_creator(integer n) return define_lambda(s_of_n,{0,repeat(0,n)},true) end function function test(integer n, sequence items) lambda l = s_of_n_creator(n) sequence samples for item in items do samples = call_lambda(l,item) end for return samples end function procedure main() sequence items_set = tagset(9,0), frequencies = repeat(0,length(items_set)) for i=1 to 100000 do sequence res = test(3, items_set) for fdx in res do frequencies[fdx+1] += 1 end for end for ?frequencies end procedure main()