R 3个或更多连续面的蒙特卡罗
我写这段代码是为了在100000次迭代的模拟中检查3个或更多的连续面,一个公平的模具有5卷。我认为这是正确的,但我遗漏了一些东西。我不断得到一个缺少值的错误:R 3个或更多连续面的蒙特卡罗,r,statistics,montecarlo,R,Statistics,Montecarlo,我写这段代码是为了在100000次迭代的模拟中检查3个或更多的连续面,一个公平的模具有5卷。我认为这是正确的,但我遗漏了一些东西。我不断得到一个缺少值的错误: nrep = 500000 count = 0 for (i in 1:nrep) { roll = sample(6, 5) print(roll) if (roll[i] == roll[i+1] & roll[i+1] == roll[i+2]) count = count + 1 } print(count)
nrep = 500000
count = 0
for (i in 1:nrep) {
roll = sample(6, 5)
print(roll)
if (roll[i] == roll[i+1] & roll[i+1] == roll[i+2]) count = count + 1
}
print(count)
请建议仅使用基数R进行更正。除了我的评论之外,您还可以使用函数
rle()
计算向量中等值运行的长度和值。您可以执行以下操作
nrep=500000
计数=0
适用于(1:nrep中的i){
滚动=样本(6,5,替换=真)
滚动=滚动(滚动)
如果(有(滚动长度>=3)){
打印(卷)
计数=计数+1
}
}
您正在索引长度为5(roll
)的内容,其值可以大到nrep
。我正在考虑另一个解决方案(几分钟后作为答案发布)。编辑:默认情况下,您还可以使用ginsample()
,它具有replace=FALSE
。Thsi意味着你将永远看不到连续的脸,因为没有数字可以重复。这似乎是我想要的工作!谢谢你,托马斯!