【发布时间】:2014-07-26 03:41:16
【问题描述】:
编辑:如果有人反对这个问题,请发表评论解释原因。
我在 Java 中实现了一种称为 Biased Voter Model 的算法,它模拟了社交网络用户的意见动态。
这里有一个特定的步骤需要我:
With probability pi , set x = q1 ; else with probability pi , set x = q2,and so on.
If the above step did not set x, then:
– With probability αi , set x = q0 ; and
– With probability 1 − αi set x = q, where
q ∈ [q0 , q ∗ ] is chosen uniformly at random.
其中,pi 和 αi 是随机选择的,并且始终保持不变。 q1,q2...qn 是已知值。 'x' 是我需要设置的。并且 q* 是与 q0 具有最小距离(最近)的 q(i)。[注意:q0 不是数组的一部分,也是已知的]
但我不确定的是"With probability pi set x=q1" 是什么意思?
我试过这样实现它:
pi=(double)Math.round(Math.random()*10)/10;//sets a random number approximated to one decimal place
while(index<n){
double j=(double)Math.round(Math.random()*10)/10;
if(j>pi){
index++;
}
else{
x=q[index];
break;
}
}
但这仅适用于第一部分。 q[] 包含 q1,q2...qn 并且对于每个索引,我都会生成一个随机数 j,如果它大于 pi,我会忽略该索引并继续下一个。
第二部分我用αi检查j。(以下只是一个伪代码,我没有在这里写所有内容)
double j=(double)Math.round(Math.random()*10)/10;
if(j<αi)
{
temp1=q0;
}
double j=(double)Math.round(Math.random()*10)/10;
//randomly generate 'k' which takes on a value of either 0 or 1
if(j<(1-αi){
if(k==0)
temp2=q0;
else if(k==1)
temp2=q*;
}
if(temp1==temp2)
x=q0;
else
x=q*
我知道这个实现并不完全正确。我在逻辑上哪里出错了? “With probability pi set x=q1”这句话究竟是什么意思?
如需进一步参考,请查看this(第 7 页第 5 节)。
【问题讨论】:
标签: java eclipse algorithm social-networking probability