高手来开下 vb随机数的问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 08:48:39
For i = 0 To 3
For j = 0 To 3
For k = 0 To 3
e1(i, j, k) = 1 / 2 * (-1) ^ (Int(Rnd * 25))
Print e1(i, j, k)
Next k
Next j
Next i
Next a

为什么每次输出的都一样呢?
我是要0.5和-0.5 的随机数

在程序中加上Randomize(),先以此函数当作随机数产生器的种子!若在不使用此函数前,那每次产生都会得到相同顺序的随机数
Randomize()
For i = 0 To 3
For j = 0 To 3
For k = 0 To 3
e1(i, j, k) = 1 / 2 * (-1) ^ (Int(Rnd * 25))
Print e1(i, j, k)
Next k
Next j
Next i
Next a

这是个数学问题, -1的无论多少次方都是+1或-1,所以 * 1/2总是
-0.5
0.5
-0.5
0.5
呵呵

是你的计算式的问题 1 / 2 * (-1) ^ (Int(Rnd * 25)) 大概就是
-0.5 的N次方的计算。你是用VB来计算。如果从数学角度来看的话。
相当于求(1-0。5)的N次方法。以大学微积分知识不难得出它的范围也就这样。如果你换成 1 / 2 * (-1) * (Int(Rnd * 25)),就能得到很多不同的结果了,我给出VB代码你参考:

Private Sub Command1_Click()
Dim e1(3, 3, 3) As Double
Randomize (Rnd)
For i = 0 To 3
For j = 0 To 3
For k = 0 To 3
e1(i, j, k) = 1 / 2 * (-1) * (Int(Rnd * 25)) '1 / 2 * (-1)
Print e1(i, j, k)
Next k
Next j
Next i

End Sub