使用R,我想帮助朋友可视化与游戏骰子相关的概率。但是,我不知道如何用R编写代码来执行以下操作:
感觉上应该很简单,但是我还没有想办法。
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倍。