用VBA产生1到6之间的随机数用Int((Rnd() * 6) + 1)随机性太差,有没有更好的办法尽量接近真实随机数我用了Randomize,我的代码如下,结果c中的随机在多次运行中有间隔或不间隔次重复的现象,请指教S
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/02 10:07:29
![用VBA产生1到6之间的随机数用Int((Rnd() * 6) + 1)随机性太差,有没有更好的办法尽量接近真实随机数我用了Randomize,我的代码如下,结果c中的随机在多次运行中有间隔或不间隔次重复的现象,请指教S](/uploads/image/z/5750706-66-6.jpg?t=%E7%94%A8VBA%E4%BA%A7%E7%94%9F1%E5%88%B06%E4%B9%8B%E9%97%B4%E7%9A%84%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%A8Int%28%28Rnd%28%29+%2A+6%29+%2B+1%29%E9%9A%8F%E6%9C%BA%E6%80%A7%E5%A4%AA%E5%B7%AE%2C%E6%9C%89%E6%B2%A1%E6%9C%89%E6%9B%B4%E5%A5%BD%E7%9A%84%E5%8A%9E%E6%B3%95%E5%B0%BD%E9%87%8F%E6%8E%A5%E8%BF%91%E7%9C%9F%E5%AE%9E%E9%9A%8F%E6%9C%BA%E6%95%B0%E6%88%91%E7%94%A8%E4%BA%86Randomize%2C%E6%88%91%E7%9A%84%E4%BB%A3%E7%A0%81%E5%A6%82%E4%B8%8B%2C%E7%BB%93%E6%9E%9Cc%E4%B8%AD%E7%9A%84%E9%9A%8F%E6%9C%BA%E5%9C%A8%E5%A4%9A%E6%AC%A1%E8%BF%90%E8%A1%8C%E4%B8%AD%E6%9C%89%E9%97%B4%E9%9A%94%E6%88%96%E4%B8%8D%E9%97%B4%E9%9A%94%E6%AC%A1%E9%87%8D%E5%A4%8D%E7%9A%84%E7%8E%B0%E8%B1%A1%2C%E8%AF%B7%E6%8C%87%E6%95%99S)
用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