【发布时间】:2017-10-26 14:08:37
【问题描述】:
我想知道是否有人可以提供帮助。
我正在寻找一种从具有权重的元组向量中进行采样的相当简单且理想的快速方法。
例如假设我有一个元组向量,每个元组都包含一个值和相应的权重/概率:
vector<tuple<int, double>> foo = { {1,0.04},{2,0.8},{ 3,0.01 },{ 4,0.03 },{
5,0.1 },{ 6,0.9 } };
我想通过 foo 并根据权重随机抽样,所以我最终会得到一个向量(一个新向量或替换 foo 中的元素),在这种情况下,问题主要是 2 和6.例如
vector<tuple<int, double>> bar = { {2,0.8},{2,0.8},{ 6,0.9},{ 6,0.9 },{
6,0.9 },{ 6,0.9 } };
我确信使用 std::discrete_distribution 之类的方法非常简单,尽管我还没有弄清楚具体方法。
编辑: 感谢您到目前为止的帮助,我可能在“重新采样”时使用了一些糟糕的术语。
本质上,我想要的是采用上述元组“foo”的向量,并生成一个与 foo 大小相同的新向量“bar”,并由 foo 的元组组成,但元组是根据元组中的概率加权随机选择。 - 希望这是有道理的。
【问题讨论】:
-
re-sample 你在做什么?是什么让价值观发生了变化?
-
你能详细说明你想要的输出是什么吗?我只是无法从你的问题中理解你在问什么(可能是因为我只是缺乏你的术语的领域知识)。
-
我很困惑。分布有变化吗?为什么说“重新采样”而不是“采样”?如果 foo 提供了可用的选择和概率,那么实际结果是完全不同的(并且不包括任何概率,只是简单的整数,随机选择的)。