R 蒙特卡罗三选一彩票

R 蒙特卡罗三选一彩票,r,sampling,montecarlo,R,Sampling,Montecarlo,这个代码不起作用,我不明白为什么 n <- 10000 list <- numeric(n) for(i in 1:n){ trial1 <- sample(0:9,3, replace = TRUE) trial2 <- sample(0:9,3, replace = TRUE) winner <- if(trial1 == trial2) 500 else -1 list[i] <-winner } mean(list) n是否仅当值相同且顺序正确时才

这个代码不起作用,我不明白为什么

n <- 10000
list <- numeric(n)

for(i in 1:n){
trial1 <- sample(0:9,3, replace = TRUE)
trial2 <- sample(0:9,3, replace = TRUE)
winner <- if(trial1 == trial2) 500 else -1
list[i] <-winner
}
mean(list)

n是否仅当值相同且顺序正确时才返回500?意思是1,2,3和2,3,1是不同的,返回-1

n <- 10000

return_result <- function() {
  trial1 <- sample(0:9,3, replace = TRUE)
  trial2 <- sample(0:9,3, replace = TRUE)
  if(all(trial1 == trial2)) 500 else -1
}

mean(replicate(n, return_result()))

你运行代码了吗?
success
在哪里定义?您正在对三个值(一个向量)进行采样。但在if条件中只允许输入一个值。如果您想查看向量是否相同,请使用
winner,我以前从问题中复制了它,但忘了更改变量的名称。感谢您的回复。如果您运行它,您将知道这里的
trial1
将不等于
trial2
,因为您将继续使用
sample
函数两次。因此,
赢家
总是
-1
return_result <- function() {
  trial1 <- sample(0:9,3, replace = TRUE)
  trial2 <- sample(0:9,3, replace = TRUE)
  if(all(sort(trial1) == sort(trial2))) 500 else -1
}

mean(replicate(n, return_result()))