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

5张牌扑克手牌四条概率计算:R语言100次模拟实现问询

用R语言模拟计算扑克手牌四条的概率

一、理论概率回顾

你提供的理论计算代码是通过组合数直接推导四条的概率,核心逻辑是:从13种牌面值选1种,取该面值全部4张牌,再从剩余48张牌选1张,最后除以52选5的总组合数。可以用R内置的choose()函数简化代码:

# 理论概率计算
theoretical_prob <- choose(13, 1) * choose(4, 4) * choose(48, 1) / choose(52, 5)
cat("理论概率:", round(theoretical_prob * 100, 4), "%\n")

二、100次模拟的实现步骤

模拟的核心思路是重复随机抽牌、判断牌型、统计次数,具体代码如下:

步骤1:构造扑克牌

用数字1-13代表A到K的牌面值,每种面值重复4次模拟4种花色:

# 构造完整牌组:1-13对应A-K,每种面值4张
deck <- rep(1:13, each = 4)

步骤2:执行模拟

循环100次,每次抽取5张无放回的牌,判断是否为四条(即某一面值出现4次):

# 模拟次数
n_sim <- 100
# 初始化四条出现次数计数器
four_count <- 0

for (i in 1:n_sim) {
  # 随机抽5张牌
  hand <- sample(deck, size = 5, replace = FALSE)
  # 统计各面值出现次数
  value_counts <- table(hand)
  # 判断是否存在出现4次的面值
  if (any(value_counts == 4)) {
    four_count <- four_count + 1
  }
}

# 计算模拟概率
sim_prob <- four_count / n_sim
cat("100次模拟得到的概率:", round(sim_prob * 100, 4), "%\n")

三、注意事项

  • 四条的理论概率仅约0.024%,100次模拟大概率会出现0次四条的情况,导致模拟结果为0。若要得到更接近理论值的结果,建议将模拟次数提升至10万次以上。
  • sample(deck, 5, replace=FALSE)模拟真实无放回发牌逻辑,确保每次抽牌符合实际规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:15:51