Добрый день. У меня есть набор значений, из которых я хотел бы нарисовать случайное подмножество.
Моя первая мысль была такая:
let getRandomIndices size count =
if size >= count then
let r = System.Random()
r.GetValues(0,size) |> Seq.take count |> Seq.toList
else
[0..size-1]
Однако, r.GetValues (0, размер) может генерировать одно и то же значение несколько раз. Как я могу получить разные значения? Моя первая мысль - многократно хранить индексы в наборе до тех пор, пока в наборе не будет задано нужное количество элементов. Но это кажется слишком процедурным / недостаточно функциональным? Есть ли лучший способ?
Или я должен начать с [0..size-1] и удалять из него случайные элементы, пока он не будет содержать нужные числовые индексы?
Я на самом деле не ищу самый эффективный подход, но самый функциональный. Я изо всех сил пытаюсь улучшить функциональное мышление.