我正在開發一個項目,需要我編寫一個函數來從一組中選擇指定數量的隨機元素。然後將這些元素映射到一個變量供以後比較。F#一組隨機元素<string>
所以在我的場景中,我必須選擇任何給定集的5%。
let rec randomSet (a:Set<string>) =
let setLength = (a.Count/100) * 5
let list = []
let rand = System.Random
if set.Length <> setLength then
// some code will go here
randomSet setLength eIDS
else
set
^請批評我的代碼,我只正在F#編碼了一個星期。
我試圖遞歸地做,但我有一種感覺,這是錯誤的方式去。我嘗試了其他方法,但他們使用.take函數,因此每次返回的集合都是相同的。
任何想法?我並不是在一套元素之後的一個元素之後,我是在任何一套元素之後的5%之後。
這不是同樣的問題:如果你覺得是,請解釋How can I select a random value from a list using F#
。
如果效率:
您現在可以使用謂詞篩選集合是一個問題,你可能想看看[水庫採樣](https://en.wikipedia.org/wiki/Reservoir_sampling)。 – kvb