多线程下的随机数问题
vb.net 多线程下的随机数,为什么每个线程产生的随机数一样啊,
哪位大哥有解决方法???
**************************************************
Private Function GetRndID(ByVal imin As Integer, ByVal imax As Integer) As Integer
Try
Dim iResult As Integer = 0
Randomize()
iResult = CInt(Int(((imax - imin) * Rnd()) + imin))
Return iResult
Catch ex As Exception
Return 0
End Try
End Function
[解决办法]
在沒有改不給種子數字時,每次新產生隨機數時都會一樣的。理解決方法有二
1)由主線程產生隨機數,并把此數傳遞給子線程。
2)同樣為主線程產生一個隨機數,這數作為子線程產生隨機數的種子數,再產生新的隨機數。
[解决办法]
因为他使用时间作种子,多线程之行的时间差不多,所以种子一样,随机数也就一样
可以给每个线程一个不同的id,然后用id+时间作种子