Excel VBA中的多次投币

时间:2019-02-26 18:49:55

标签: excel vba

在Excel VBA中,我扔了四个硬币并计算了正面数。我正在使用的代码是:

CoinHeads = Int(Round(Rnd(), 0)) + Int(Round(Rnd(), 0)) + Int(Round(Rnd(), 0)) + Int(Round(Rnd(), 0))

这行得通,但是我想知道在Excel VBA代码中是否有更简单的方法来执行此操作,仍然可以让我从0到4分配相同的人数。

2 个答案:

答案 0 :(得分:0)

如果您只是想稍微简化一下语句,则可以改用Int(2 * Rnd())

CoinHeads = Int(2 * Rnd()) + Int(2 * Rnd()) + Int(2 * Rnd()) + Int(2 * Rnd())

除此之外,您还可以像@Comintern在其评论中所说的那样对头的数量进行细分。

答案 1 :(得分:0)

您应该编写一个小函数,并将头的数量作为参数传递,以泛化您的代码(如果随机数大于或等于0.5,则在此处抛头):

Public Function getNumberOfHeads(ByVal nb As Integer) As Integer
    Dim nbHeads As Integer: nbHeads = 0
    Randomize 
    For j = 0 To nb 
        If Rnd() >= 0.5 Then nbHeads = nbHeads + 1
    Next j
    getNumberOfHeads = nbHeads
End Function

然后在代码中像这样使用它:

numberOfHeads = getNumberOfHeads(4)