gpt4 book ai didi

r - 如何在 R 中的 for() 循环中使用 while() 循环

转载 作者:行者123 更新时间:2023-12-01 22:15:42 25 4
gpt4 key购买 nike

我是 R 的新手,所以我的大部分代码很可能是错误的。但是,我想知道如何在 for() 循环中使用 while() 循环。如果总点数为 2、3、7、11 或 12,我将尝试模拟多次掷骰子,然后我停止。如果总数为 4、5、6、8、9 或 10,那么我将继续掷骰子,直到出现初始总数或 7。我试图找到结束游戏所需的平均掷骰数

count = 0
x = NULL
for (i in 1:10) {
x[i] = c(sample(1:6,1) +sample(1:6,1))
if(x[i] == c(2||3||7||11||12)) {
if(TRUE) {count = count +1}
} else { while(x[i] == c(4||5||6||8||9||10)) {
x[i +1] = c(sample(1:6,1)+sample(1:6,1))
if(x[i+1] == c(x[i]||7)) {
if(TRUE){count = count + x[i+1]}
}
}
}
}
print(count)

最佳答案

我认为您的逻辑存在一些问题。我不太确定您要在您的代码中做什么,但这是我对您的问题的描述的解释......这只会运行您的游戏的一轮 - 它如果你将它嵌入到 for 循环中应该可以工作(只是不要重置 count 或在你的循环中重置随机数种子 - 然后 count 会给你总的卷数,你可以除以轮数得到平均值)

设置:

count = 0
sscore <- c(2,3,7,11,12)
set.seed(101)
debug = TRUE

运行单轮:

x = sample(1:6,1) +sample(1:6,1)  ## initial roll
count = count + 1
if (x %in% sscore) {
## don't need to do anything if we hit,
## as the roll has already been counted
if (debug) cat("hit",x[i],"\n")
} else {
## initialize while loop -- try one more time
y = c(sample(1:6,1)+sample(1:6,1))
count = count + 1
if (debug) cat("initial",x,"next",y,"\n")
while(!(y %in% c(x,7))) {
y = c(sample(1:6,1)+sample(1:6,1))
count = count+1
if (debug) cat("keep trying",y,"\n")

} ## end while
} ## end if-not-hit
print(count)

我尝试将其嵌入到 for 循环中,得到 1000 轮的平均值为 3.453,接近@PawelP 的答案。

PS 我希望这不是作业,因为我不想回答作业问题......

关于r - 如何在 R 中的 for() 循环中使用 while() 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25713932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com