估算五枚骰子点数和在15-20间的概率:我的R代码是否正确?
代码错误分析与优化建议
你的代码没有语法错误,可以正常运行得到结果,但存在几个可改进的细节问题:
- 注释错误:第二处注释写的是
#sum the value of all 6 die,但你模拟的是5枚骰子,注释内容和实际逻辑不符,建议修正为#计算5枚骰子的点数之和。 - 变量命名隐患:你用
sum作为变量名,而sum是R的内置函数,当前虽不会报错,但后续若需调用sum()函数可能引发混淆,建议改用total_sum这类自定义名称。 - 求和方式冗余:手动逐个相加
mydie[1]+mydie[2]+mydie[3]+mydie[4]+mydie[5]完全可以用sum(mydie)替代,代码更简洁且不易出错。 - 模拟次数不足:
replicate(100)的模拟次数太少,得到的概率估算误差会很大,建议增加到至少10000次(比如replicate(10000)),这样结果会更接近真实概率。
优化后的代码示例:
myex <- replicate(10000, { # 创建5枚骰子的点数向量 mydie <- sample(1:6, 5, replace = TRUE) # 计算5枚骰子的点数之和 total_sum <- sum(mydie) }) # 计算点数和在15到20之间的概率 mean(myex >= 15 & myex <= 20)
补充说明:通过组合数学计算可得,5枚骰子点数和在15-20之间的真实概率约为0.5,足够多的模拟次数会让估算值趋近于这个结果。
内容的提问来源于stack exchange,提问作者Benezer
相关产品推荐
相关产品推荐

