【发布时间】:2021-11-24 06:12:41
【问题描述】:
在一个村庄里有 N=100 人,他们用一个 关于一些动作的有趣方式。具体来说,如果有人提议 一个动作,然后所有 N 个村民投票赞成或反对。这 第二天每个村民独立地重新调整她/他的意见 其他村民,再次投票的概率等于 前一天的总(最大)支持者的概率。这个 投票过程一直持续到所有 N=100 人都同意相同的意见为止。
问题:
必须经过多少投票日才能让所有 N 个村民投票相同?
我的努力
答案必须是所需的迭代次数。
我想在 R 中模拟这个过程,这是一个类似于 Polya Urn 的过程(我相信),但这里我们没有红色 =1 和绿色 = 1 个球在骨灰盒中。我们有 N 个球(选民)。
此外,我们在 X_{0} 的第一天有随机的 i 人在 YES 和 j 人在 NO。
因此我们有 p = i/N 和 q =j/n。
现在每个村民将在第二天再次投票,但概率等于前一天的最大概率。 类似的东西
votevillage <- function(n) {
i = sample(1:N,1);i
j = N-i;j
p = i/N;p
q = 1-p;q
support = max(i,j)
while (support != n) {
vote = sample(c("YES","NO"),1,prob=c(1-p,p))
support = support + vote
}
if (vote == "YES")
return(1)
else
return(0)
}
n = 100
trials = 100000
simlist = replicate(trials, votevillage(n))
mean(simlist)
上面的代码是错误的。这是我的想法(类似于伪代码)。
【问题讨论】:
-
只需要 1 天的投票。您可能想改写您的实际问题。
-
不会。因为下一个投票日,还有对方的支持者。
-
如果他们都在第一天投票支持同一件事,则不会。也许需要添加更多约束,但我没有看到任何阻止它的东西,问题只询问了必须通过的天数。对于一件每个人都同意的事情,只有一天。即使在第一天没有一致投票,两天也是可能的。
-
所以也许你只需要重新考虑你提出的问题或提供更多限制。
-
@Dason 有趣...!!!您能否提供一个模拟您的方法,证明这需要 1 或 2 天?
标签: r for-loop simulation