r - r代码用于滚动n骰子并消除
问题描述
我正在尝试为这个挑战编写一个 r 代码:假设我们掷 n 个骰子,删除所有出现 1 的骰子,然后再次掷出其余的骰子。如果我们重复这个过程,最终所有的骰子都会被淘汰。平均而言,我们将制作多少卷?这是我到目前为止尝试过的,但它不起作用。5个骰子的教科书理论答案是13.02
代码尝试
N=10000
myfun <- function(...) {
for(i in list(...)){
num=1
S=sample(1:6,i,replace = TRUE)
i=i-length(which(S==1))
while(i!=0){
i=i-length(which(S==1))
num=num+1
}
result[i]=num
}
}
replicate(N,myfun(1:100))
解决方案
这是一个工作脚本,它计算必须掷骰子多少次才能生成六个值中的每一个:
numRolls <- function() {
cnt <- 0
x <- c(1:6)
while (length(x) > 0) {
rand <- sample(1:6,1,replace = TRUE) # generate random value 1 to 6
x <- x[which(x!=rand)] # remove this value if not yet seen
cnt <- cnt + 1 # increment number of rolls
}
return(cnt)
}
totalRolls <- 0
for (i in 1:1000) {
totalRolls <- totalRolls + numRolls()
}
totalRolls / 1000
[1] 14.819
我进行了 1000 次测试,得到了14.819
覆盖骰子上每个值所需的平均滚动次数。
推荐阅读
- sql - 从同一个表中的列创建电子邮件地址
- python-3.x - AttributeError:“列表”对象没有属性“特征”
- java - 用Java编写程序,通过数组和乘法后弹出元素
- c# - 如何使用 Speechsynthezier 在设备上设置和发送语言?(Windows.Media.Speechsynthesis)
- ruby-on-rails - 如何从 ruby on rails 中的元标记中获取内容值?
- linkedin - 通过 LinkedIn API V2 创建图像共享不起作用
- android - Android 项目:这项工作被卡住了,因为该项目没有在线分配任何跑步者。进入跑步者页面
- pyqt5 - 运行pyqt5程序,报错:此应用程序无法启动,因为它无法在“”中找到或加载Qt平台插件“xcb”
- python - 将 tensorflow 运算符分别应用于批处理中的每个数据,但需要并行运行它们
- javascript - Django admin中Select2 4.0.5常见错误