用VBA产生1到6之间的随机数用Int((Rnd() * 6) + 1)随机性太差,有没有更好的办法尽量接近真实随机数我用了Randomize,我的代码如下,结果c中的随机在多次运行中有间隔或不间隔次重复的现象,请指教S

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 09:55:32

用VBA产生1到6之间的随机数用Int((Rnd() * 6) + 1)随机性太差,有没有更好的办法尽量接近真实随机数我用了Randomize,我的代码如下,结果c中的随机在多次运行中有间隔或不间隔次重复的现象,请指教S
用VBA产生1到6之间的随机数用Int((Rnd() * 6) + 1)随机性太差,有没有更好的办法尽量接近真实随机数
我用了Randomize,我的代码如下,结果c中的随机在多次运行中有间隔或不间隔次重复的现象,请指教
Sub 随机数()
Randomize Timer
Dim c(1 To 99, 1 To 1) As Integer
For i = 1 To 99
r = Int((Rnd() * 6) + 1)
s = Int((Rnd() * 6) + 1)
t = Int((Rnd() * 6) + 1)
c(i, 1) = r + s + t
Next
End Sub

用VBA产生1到6之间的随机数用Int((Rnd() * 6) + 1)随机性太差,有没有更好的办法尽量接近真实随机数我用了Randomize,我的代码如下,结果c中的随机在多次运行中有间隔或不间隔次重复的现象,请指教S
在VBA和在工作表函数中rnd的用法有所不同
你直接这样试下
Sub 随机数()
Randomize Timer
Dim c(1 To 99,1 To 1) As Integer
For i = 1 To 99
r = Int(Rnd * 6 + 1)
s = Int(Rnd * 6 + 1)
t = Int(Rnd * 6 + 1)
c(i,1) = r + s + t
Next
End Sub
而你的代码中就是三个1到1到6的和,还不如直接
Sub 随机数()
Randomize Timer
For i = 1 To 99
Cells(i,1) = Int(Rnd * 16 + 3)
Next
End Sub
最小数为3,而最大数为18