我有一个大小为10000的map<string,float>
。值(浮点数)是该键(字符串)的概率,非负数条目加起来为一个。
E.g。键(值):A(0.5);B(0.3);C(0.2)
如何根据概率vector
获得随机密钥(我知道我没有矢量),例如{0.5,0.3,0.2}
?
我可以使用C++11
。
谢谢。
答案 0 :(得分:1)
创建一个附加地图,其键是累积概率,值是迭代器到第一个地图或只是你想要的字符串。例如:0(A),0.5(B),0.8(C)。然后生成一个介于0和1之间的随机值,最后在第二个地图上使用lower_bound
和该值。