如何在Excel VBA中生成随机数

kdh*_*886 6 random excel vba excel-vba

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

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

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

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

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

Gar*_*ent 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
Run Code Online (Sandbox Code Playgroud)


小智 5

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

=choose(randbetween(1, 2), "white", choose(randbetween(1, 4), "red", "green", "blue", "yellow"))
Run Code Online (Sandbox Code Playgroud)

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

  • 如果你只是写'=选择(兰德(1,8),"白色","白色","白色","白色","红色","绿色","蓝色","黄色",这实际上会更简单")` (2认同)
  • 你把我的代码称为"丑陋"!! :'( 大声笑 (2认同)

Ima*_*889 4

您也可以在不使用 VBA 的情况下执行此操作:

=IF(RAND()<0.5,2,FLOOR(RAND()*4,1)+3)
Run Code Online (Sandbox Code Playgroud)

这给出了 50% 的机会返回 2,另外 50% 的机会均匀分布在 3 和 6 之间。