使用R语言sample函数模拟掷骰子(两骰子掷24次)失败,求解决
问题分析与解决方法
你的代码无法正常运行的核心问题是6^48这个数值太大,远超R能处理的有效整数范围,会触发数值溢出,导致n变成精度丢失的浮点数,sample函数根本没法基于这种数值完成抽样操作。
正确的模拟思路
模拟掷两个骰子24次,不需要先计算总可能结果数,直接模拟每次掷骰子的过程即可:
- 单次掷两个骰子:每个骰子结果是1-6的整数,用
sample(1:6, 2, replace = TRUE)就能模拟 - 重复24次该操作,得到24次的结果
示例代码
# 模拟掷两个骰子24次,返回的每一列是一次的结果 dice_rolls <- replicate(24, sample(1:6, 2, replace = TRUE)) # 转置后每行对应一次掷骰子的两个结果,更直观 dice_rolls <- t(dice_rolls) print(dice_rolls)
为什么原方法不可行
6^48是一个约2.2e36的天文数字,而R的整数类型最大只能处理到约9e18,这个数已经超出了R的有效整数范围,会被存储为精度丢失的浮点数。sample函数需要基于有效的整数集合或明确的元素来抽样,这种超大的数值完全不符合函数的使用场景,自然无法运行。
内容的提问来源于stack exchange,提问作者khali-blinks
相关产品推荐
相关产品推荐

