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

如何用R语言table函数统计Craps游戏各类结果出现次数

解决方法

你的问题出在每次循环都用单个变量x存储结果,前面的结果会被后面的覆盖,最后自然只剩最后一次的记录。要汇总所有N次游戏的结果,需要把x初始化为向量,每次循环将结果存入向量的对应位置。

修改后的代码

# Play the game many times
win = 0; tie = 0; N = 10^4
# 初始化一个长度为N的字符型向量,用来存储每一次游戏的结果
x = character(N) 

for(j in 1:N){
  points = sum(sample(1:6, 2, replace=T))
  if(points == 7 | points == 11){
    win = win + 1
    x[j] = paste("natural winner", points)
  } else if(points == 2 | points == 3 | points == 12){
    x[j] = paste("natural loser", points)
  } else {
    for(i in 1:20){
      newroll = sum(sample(1:6, 2, replace=T)) 
      if(newroll == points){
        win = win + 1
        x[j] = paste("points winner", points)
        break 
      } else if(newroll == 7){
        x[j] = paste("points loser", points) 
        break
      } 
      if(i == 20){
        tie = tie + 1
        x[j] = paste("20 Bullets Survivor", points)
      } # end if i==20
    } # end i loop
  } # end else
} # end j loop

# 统计各类结果的出现次数
result_table = table(x)
print(result_table)

# 可选:转成数据框并计算概率,更接近示例格式
result_df = as.data.frame(result_table)
colnames(result_df) = c("结果类型", "次数")
result_df$概率 = result_df$次数 / N
print(result_df)

关键说明

  • 初始化x = character(N):创建长度为N的字符型向量,预留空间存储每一次游戏的结果。
  • 循环中用x[j] = ...:把第j次游戏的结果存入向量对应位置,不会覆盖之前的记录。
  • 最后用table(x)就能统计所有结果的出现次数,转成数据框后还能计算概率,和你提供的骰子概率表示例格式更匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:32:07