使用R,如何掷骰子并丢弃最低掷骰子?

问题描述 投票:-2回答:1

使用R,我想帮助朋友可视化与游戏骰子相关的概率。但是,我不知道如何用R编写代码来执行以下操作:

  • 滚动多个骰子(例如:4个六面骰子),丢弃掷骰最低的骰子,然后添加其余骰子。

感觉上应该很简单,但是我还没有想办法。

r probability dice
1个回答
0
投票
sum(sort(sample(6, size = 4, replace = TRUE), partial = 1)[-1])

要查看它在做什么,我们将使用静态种子并遍历所有内容。

### four six-sided dice
set.seed(6); sample(6, size = 4, replace = TRUE)
# [1] 4 6 2 3

### sort just the minimum to the front
set.seed(6); sort(sample(6, size = 4, replace = TRUE), partial = 1)
# [1] 2 3 6 4

### remove the minimum at the front
set.seed(6); sort(sample(6, size = 4, replace = TRUE), partial = 1)[-1]
# [1] 3 6 4

set.seed(6); sum(sort(sample(6, size = 4, replace = TRUE), partial = 1)[-1])
# [1] 13

sort(..., partial=1)进行排序直到找到最小值并将其放置在向量的开头;此后不进行排序。虽然对于问题不是必需的,但不需要进行不必要的排序。将其保留或保留为:- )

编辑

正如Brian所建议的,显然是我渴望尽早优化的渴望:

x <- sample(6, size=4, replace=TRUE)
sum(x[-which.min(x)])

sort(...)快大约8-10倍,比sort(..., partial=1)快4-5倍。

© www.soinside.com 2019 - 2024. All rights reserved.