私は、セットからランダムな要素の指定された数を選択する関数を書く必要があるプロジェクトに取り組んでいます。その後、これらの要素を後で比較できるように変数にマップします。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
^私のコードを批判してください、私は1週間F#でコーディングしています。
私は再帰的にしようとしましたが、それは間違った方法だと感じています。私は他のメソッドを試しましたが、それらは.take関数を使用しているので、返されるコレクションは毎回同じです。
アイデア?私はセットから1つの要素の後ではない、私はそれにスローされる任意のセットの5%後です。
これは、このように同じ質問ではありません:あなたはそれがあると考えられる場合は、説明してくださいHow can I select a random value from a list using F#
。
効率場合懸念事項である場合は、[Reservoir Sampling](https://en.wikipedia.org/wiki/Reservoir_sampling)を調べるとよいでしょう。 – kvb