根据值的概率从Map获取随机密钥

时间:2017-10-23 15:08:36

标签: c++ c++11

我有一个大小为10000的map<string,float>。值(浮点数)是该键(字符串)的概率,非负数条目加起来为一个。

E.g。键(值):A(0.5);B(0.3);C(0.2)

如何根据概率vector获得随机密钥(我知道我没有矢量),例如{0.5,0.3,0.2}

我可以使用C++11

谢谢。

1 个答案:

答案 0 :(得分:1)

创建一个附加地图,其键是累积概率,值是迭代器到第一个地图或只是你想要的字符串。例如:0(A),0.5(B),0.8(C)。然后生成一个介于0和1之间的随机值,最后在第二个地图上使用lower_bound和该值。

相关问题