r - 在 Perudo 中估计概率
问题描述
我是编码和使用 R 的新手。我正在做一个项目来模拟游戏 Liar's Dice,也称为 Perudo,并且对创建模拟有一些疑问。
基本上,该游戏由两个或更多玩家在一个杯子中掷五个骰子,将其翻转,然后对他们认为桌上有多少特定方进行出价。您可以查看自己的骰子,但不能查看其他人的骰子。要出价,轮到您说“两个 5”,这意味着至少有两个骰子落在 5 上。每次出价都会增加边数或数量。所以如果你说“两个 5”,那么轮到我说“两个 6”或“三个 3”。
当您认为最后的出价不正确时,轮到您说“骗子”,然后每个人都亮出他们的骰子。如果你错了,你会失去一个骰子,但如果你是对的,最后出价者会失去一个骰子。这种情况一直持续到只剩下一个有骰子的玩家。
首先,我决定创建一个名为 cup() 的函数,它可以掷出一个由五个六面骰子组成的杯子。
cup <- function(sides = 6, dice = 5){
sample(1:sides, size = dice, replace = TRUE)
}
接下来,在一些帮助下,我创建了一个名为 cups() 的新函数,它为三个玩家滚动三个杯子。
cups <- function(players = 3, sides = 6, dice = 5){
out <- cup(sides, dice)
for(i in 2:players){
out <- rbind(out, cup(sides, dice))
}
rownames(out) <- 1:players
rownames(out) <- c("P1", "P2", "P3")
return(out)
}
我接下来要完成的是创建一个可能的骰子结果概率表。换句话说,游戏中有 15 个骰子(每个玩家 5 个)至少有两个一方的概率是多少?然后在这种情况下,有 3、4、5 等的概率一直到 15。
我的问题是我将如何在 R 中执行此操作?在获得 R 中的概率后,我应该往哪个方向发展?
解决方案
这是一个经验过程,用于确定在掷出 5 个骰子时所有相同、4 个相同、3 个相同、2 个相同、不同的百分比结果:
library(gtools) # package with permutations function
allcombos <- permutations(6, 5, repeats.allowed = TRUE) # all 6 choose 5 with replacment combos
alluniques <- apply(allcombos, 1, unique) # uniques for each combo
alllengths <- sapply(alluniques, length) # lengths for each combo imputes num repeats
alllengths2 <- as.factor(alllengths) # convert to factor to count unique
allsum <- summary(alllengths2) # sum by num uniques
allsum
1 2 3 4 5 # 1=all same, 2=4 same, 3=3 same, 4=2 same, 5=all different
6 450 3000 3600 720
totsum <- sum(allsum)
allfrac <- allsum / totsum
allpercent <- allfrac * 100
allpercent
1 2 3 4 5
0.07716049 5.78703704 38.58024691 46.29629630 9.25925926 # percentage breakout
毫无疑问,一个分析解决方案,但我不知道它是什么。您可以使用标准概率计算来估计多个参与者之间的特定结果。例如 P(至少 1 个 4-same | 3 个玩家)或运行一些模拟。
推荐阅读
- javascript - Javascript Observable -> 删除对象数组的项
- python-3.x - “NoneType”对象没有属性“boto_region_name”
- c - 找不到 emmake 和 emconfigure 命令 (osx)
- java - SMTP 与一封邮件
- kubernetes - 如何在没有通信的情况下在 Kubernetes 中拥有 2 个独立的命名空间
- c++ - 两个父类的构造函数顺序
- oracle - 多个微服务连接到单个 Oracle 服务器
- python - 如何使用 Python unittest 模块修补属于某个类的字典的值?
- python - Python 问题的持续困难
- angular - 如何在角垫文本区域中设置最大字符长度?