max
let rec uniqRand set max=
match Set.count set = max with
| true -> None
| false ->
let r = new System.Random()
let i = r.Next max
if Set.contains i set then uniqRand set max
else Some i
let rgen max acc =
match uniqRand acc max with
| None -> None
| Some item -> Some (item, Set.add item acc)
let rand max =
Seq.unfold (rgen max) Set.empty
кстати, не лучше тут генерацию числа(r.Next) вынести как аргумент? Ведь каждую вложенность создавать Random такое себе
Обсуждают сегодня