excel 用VBA根据概率生成随机数

如图,上面是各气温发生的概率,底下要根据概率随机生成10天的气温,要做成一个VBA按钮,没按一下就会重新生成10天的气温

这个需要用VBA么?Excel函数就搞定了。

当然录制一个宏也没问题。

准备好数据,点击数据分析按钮,如图操作。

我这准备的数据是5个,总概率是1(0.1,0.15,0.2,0.25,0.3),分别对应值(1,2,3,4,5)

数值与概率输入区域必须是两列,左边为值,右边为概率。

结果你就选个起始单元格输出吧。


下面是宏脚本

     Application.Run "ATPVBAEN.XLAM!Random", ActiveSheet.Range("$A$7"), 5, 1, _

        7, , ActiveSheet.Range("$A$1:$B$5")

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-26
只需把=INT(RAND()*+8)复制到单元格即可, =RAND()表示0到1之间的随机数 =RAND()*-100则是-100到0之间的随机数, =RAND()*-100+50则是-50到50之间的随机数 取整数为 =INT(RAND()*-100+50) 注意:INT函数为取整,表示小于该数的最小整数 如INT(8.13)=8而INT-8.13)=-9 不过这个不会影响你去随机数
第2个回答  2018-12-27
请问10天数按上面10%,10%,15%,15%,15%,15%,15%,10%,10%生成吗,如果按上面生成,15%生成1.5个不是整数不好处理,会有2个或1个出现了。
第3个回答  2018-12-27
简单的随机生成不用用到VBA,直接用函数就可以了,VBA是好用,但是能用简单的办法没必要搞得那么复杂。
第4个回答  2018-12-25
可以用rand()和randbetween()两个函数,
前者是0到1,后者是任意两函数之间,如下是两种A1列第1~50行随机示例:
Sub method01()
Dim i As Integer
For i = 1 To 50
Cells(i, 1) = "=rand()" '取0至1之间的随机数
Next i
End Sub
Sub method02()
Dim i As Integer
For i = 1 To 50
Cells(i, 1) = "=randbetween(50,80)" '取50至80之间的随机整数
Next i
End Sub
相似回答