如何在Excel VBA中生成随机数

时间:2017-10-09 19:11:28

标签: excel vba excel-vba random

我想写一个函数生成一些代表

的数字
  

2 =白色,     3 =红色,      4 =绿色,     5 =蓝色,      6 =黄色

我知道如果概率相等,那么我可以写

  

GenerateColor = Int(Rnd()* 5)+ 2

但是,我希望产生白色的一半时间并与剩下的4种颜色共享另一半,我该怎么办? (这意味着50%的概率是白色,50%的概率是4种颜色。)

4 个答案:

答案 0 :(得分:7)

尝试一下:

Sub RanGen()
    With Application.WorksheetFunction
        x = .RandBetween(1, 2)
        If x = 2 Then
            MsgBox x
        Else
            x = .RandBetween(3, 6)
            MsgBox x
        End If
    End With
End Sub

答案 1 :(得分:5)

在工作表公式中,这类似于

=choose(randbetween(1, 2), "white", choose(randbetween(1, 4), "red", "green", "blue", "yellow"))

您可以使用本机VBA函数在VBA中对其进行编码,或者只是在多个位置添加worksheetfunction

答案 2 :(得分:4)

您也可以在没有VBA的情况下执行此操作:

=IF(RAND()<0.5,2,FLOOR(RAND()*4,1)+3)

这使得50%的机会返回2,而另外50%的机会均匀分布在3和6之间。

答案 3 :(得分:2)

您还可以使用具有累积值的辅助列,如下所示:

您用于结果的公式是:

=INDEX($B$2:$B$6,COUNTIF($D$2:$D$6,"<="&RAND())+1)

column D中的公式只是一个简单的SUM函数:

=SUM($C$2:C2)

这也应该为您提供您正在寻找的结果,并且将来更容易更改。