在Excel VBA中,我扔了四个硬币并计算了正面数。我正在使用的代码是:
CoinHeads = Int(Round(Rnd(), 0)) + Int(Round(Rnd(), 0)) + Int(Round(Rnd(), 0)) + Int(Round(Rnd(), 0))
这行得通,但是我想知道在Excel VBA代码中是否有更简单的方法来执行此操作,仍然可以让我从0到4分配相同的人数。
答案 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)