Seleção aleatória ponderada usando o método de alias de Walker
Eu estava procurando por esse algoritmo
(algoritmo que selecionará aleatoriamente de uma lista de elementos onde cada elemento tem probabilidade diferente de ser escolhido (peso))
e encontrei apenas implementações em python ec, depois que fiz um C # one, um pouco diferente (mas acho mais simples) achei que deveria compartilhá-lo, também preciso de umF # imlementation, se alguém puder fazer isso por favor poste uma resposta
<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>
se alguém puder refazê-lo em F # por favor poste seu código