Ważony losowy wybór przy użyciu metody aliasu Walkera
Szukałem tego algorytmu
(algorytm, który losowo wybierze z listy elementów, w których każdy element ma inne prawdopodobieństwo pobrania (waga))
i znalazłem tylko implementacje Pythona i c, po tym, jak zrobiłem C #, trochę inaczej (ale myślę, że prostsze) Myślałem, że powinienem się nim podzielić, potrzebuję teżF # imlementacja, jeśli ktoś może to zrobić, wyślij odpowiedź
<code>using System; using System.Collections.Generic; using System.Linq; namespace ChuckNorris { class Program { static void Main(string[] args) { var oo = new Dictionary<string, int> { {"A",7}, {"B",1}, {"C",9}, {"D",8}, {"E",11}, }; var rnd = new Random(); var pick = rnd.Next(oo.Values.Sum()); var sum = 0; var res = ""; foreach (var o in oo) { sum += o.Value; if(sum >= pick) { res = o.Key; break; } } Console.WriteLine("result is "+ res); } } } </code>
jeśli ktoś może go przerobić w F #, opublikuj swój kod