我想在概率上从向量中的“e”edges_in_sorted_order中选择“n”个边。 但我想在选择中使用概率。而且我也不想在首发中选择大边缘。
所以它就像在起点上给较小的边缘增加了更多的重量,并且随着边缘的增加, 我也会给更大的剩余边缘赋予越来越多的重量。
我应该选择n和e的概率函数吗?
while( edgesTaken < n ) {
for each edge i and edgesTaken < n
probability = pdf( edgesTaken, i)
if ( prob > THRESHOLD )
take the edge
}
答案 0 :(得分:0)
您需要分配功能来进行所需的分发。使用标准生成器绘制一个随机数,以便在[0,1]中统一分布q。然后用q作为参数调用分位数函数。得到的随机集将具有所需的分布。
答案 1 :(得分:0)
第一个边是1的概率是选择(n-1,e-1)/选择(n,e)。
更一般地说,第一个边缘是k的概率是 [选择(n-k,e-1)/选择(n,e)] * 1 / k
你也可能想要1-k中只有一条边的概率: [选择第(n-K,E-1)/选择(N,E)]
从这里开始,我认为你可以把事情搞定!
P.S。只是为了解释,这三个函数给出了选择满足条件的边的方法的数量比,选择(n,e)这是从n中选择边的方法的数量。