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
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);
}
}
}
se alguém puder refazê-lo em F # por favor poste seu código