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

在R语言中计算双骰子点数和≥5的累计概率求助

R语言计算两骰子点数和≥5的累计概率解法

你不需要遍历表格,用R的向量化特性就能轻松搞定,给你两种简单的实现方式:

方法一:直接基于原始结果计算

直接对xy向量统计满足条件的次数占总次数的比例,代码如下:

numrolls = 10000

x = sample(1:6, numrolls, replace=TRUE)
y = sample(1:6, numrolls, replace=TRUE)
xy = x + y

# 直接计算累计概率
total_prob = sum(xy >= 5) / numrolls
total_prob

解释:xy >= 5会生成一个长度为10000的逻辑向量(满足条件为TRUE,否则FALSE),sum()会自动把TRUE转为1、FALSE转为0,求和就是满足条件的投掷次数,除以总次数就是累计概率。

方法二:基于概率表累加

如果你想用已经生成的prob概率表计算,只需要筛选出点数和≥5的概率项再求和:

numrolls = 10000

x = sample(1:6, numrolls, replace=TRUE)
y = sample(1:6, numrolls, replace=TRUE)
xy = x + y

prob = table(xy) / numrolls
# 筛选点数和≥5的概率并求和
total_prob = sum(prob[as.numeric(names(prob)) >= 5])
total_prob

解释:names(prob)是点数和的字符型标签,转成数值型后筛选出≥5的项,再用sum()累加对应的概率值。

你原来的if(xy >=5)写法有问题,因为xy是长度10000的向量,if只能处理长度为1的条件,R里这种批量判断不需要用循环或遍历,向量化操作更高效简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:37:11