You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言掷硬币循环问题:如何让coin_flip迭代更新且不重复输出

问题解决与代码修正

先给你修正后的可运行代码:

heads <- 0
tails <- 0

while (heads < 3 & tails < 3) {
  # 每次循环重新生成随机掷硬币结果
  coin_flip <- sample(1:2, 1)
  print(coin_flip)
  
  # 使用比较运算符==,且用else if避免重复判断
  if (coin_flip == 1) {
    print('Heads!')
    heads <- heads + 1 
  } else if (coin_flip == 2) {
    print('Tails!')
    tails <- tails + 1
  }
} 

错误原因与解决说明

  • 问题1:coin_flip值不更新
    你仅在循环外初始化了一次随机值,循环内部没有重新调用sample()生成新结果,导致每次迭代都复用初始值。解决方式是把coin_flip <- sample(1:2, 1)移到while循环内部,让每次循环都生成新的随机数。

  • 问题2:同时输出Heads!和Tails!
    你的if判断误用了赋值运算符<-而非比较运算符==:

    • 第一个if (coin_flip <- 1)是将1赋值给coin_flip,表达式结果为真,会执行Heads的代码块;
    • 第二个if (coin_flip <- 2)又将2赋值给coin_flip,表达式同样为真,所以Tails的代码块也会触发。
      解决方式是把<-替换为比较用的==,同时用else if替代第二个if,确保同一轮循环只会执行其中一个分支。

内容的提问来源于stack exchange,提问作者Stabilo Boss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 15:37:40