import Darwin func s_of_n_creator(n: Int) -> T -> [T] { var sample = [T]() var i = 0 return {(item: T) in i++ if (i <= n) { sample.append(item) } else if (Int(arc4random_uniform(UInt32(i))) < n) { sample[Int(arc4random_uniform(UInt32(n)))] = item } return sample } } var bin = [Int](count:10, repeatedValue:0) for trial in 0..<100000 { let s_of_n: Int -> [Int] = s_of_n_creator(3) var sample: [Int] = [] for i in 0..<10 { sample = s_of_n(i) } for s in sample { bin[s]++ } } println(bin)