我一直在寻找这种算法
(该算法将从元素列表中随机选择,其中每个元素具有不同的被挑选概率(权重))
,并且在我做了一个 C# 之后,只发现了 python 和 c 实现,有点不同(但是我认为更简单)我想我应该分享它,我还需要一个F# 实施,如果有人能做到,请发布答案
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);
}
}
}
如果有人可以在 F# 中重新制作它,请发布您的代码