随机打乱数组怎么样才能更随机?
RandomizeDim i As Integer
Dim ss As Integer
Dim j As Integer
Dim k As Integer
For i = 1 To 10
j = 9 * Rnd() + 1
k = 9 * Rnd() + 1
ss = a(j)
a(j) = a(k)
a(k) = ss
Next i
这是一种
Randomize
Dim i As Integer
Dim ss As Integer
Dim j As Integer
Dim k As Integer
For i = 1 To 10'
k = 9 * Rnd() + 1
ss = a(i)
a(i) = a(k)
a(k) = ss
Next i
这也是一种,感觉第二种比第一种随机,是这样吗?
使用更接近真随机的函数吧,看看这个:
【分享】马大哈系列功能模块----更好的随机数发生函数,可替代Rnd
http://www.m5home.com/bbs/thread-3225-1-1.html
源数组是否有重复的元素?
就像洗牌法一样了,以后取出的数值,全部提取完毕后,还是一样的。
要防止重复,可以用线性同余法,随机数的生成关键要有随机种子,
种子不是随机的,生成的随机数必然不是真正Random。
可以综合一下计算机有随机数据的地方,比如:
时间的浮点位,CPU占用率,内存使用情况,数据包的发送时常,各种传感器的温度,等等 回复 miaomiao 的帖子
嗯,我发的那个函数就是以这些为种子的 洗牌法随机算法是比较好一种方法,54张牌,只需要随机54次 两种算法基本没区别.
页:
[1]