前端之家收集整理的这篇文章主要介绍了
[VB.NET]多线程下的随机数问题,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
多线程下的
随机数问题 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 __________________________________________________________________________ 没有人能帮忙?谢谢了。Up一下~ __________________________________________________________________________ 在沒有改不給種子數字時,每次新產生隨機數時都會一樣的。理解決
方法有二 1)由主線程產生隨機數,并把此數傳遞給子線程。 2)同樣為主線程產生一個隨機數,這數作為子線程產生隨機數的種子數,再產生新的隨機數。 __________________________________________________________________________ 每次 产生
随机数 前 使用 Randomize () 问题
解决 结帖 __________________________________________________________________________ Randomize() 没用的。每次还是都会一样的。 现在是多线程的问题... **************************************************** chenxdb(菜鳥也瘋狂) 的
方法有没有具体的例子?? 现在如果我在产生
随机数的时候.使用一个Msg
Box(),弹出点信息,它产生的
随机数就不会重复的。为什么? __________________________________________________________________________ 因为他使用时间作种子,多线程之行的时间差不多,所以种子一样,
随机数也就一样 可以给每个线程一个不同的id,然后用id+时间作种子 __________________________________________________________________________ 我用 Thread.CurrentThread.ManagedThreadId 和 DateTime.Now.Millisecond 一起作为种子,这次
生成的不一样的,要庆祝一下。另外谢谢各位的讨论。 __________________________________________________________________________ 主線程 Dim ran As New Random(Now.Millisecond) For i As Integer = 0 To 100 System.Threading.ThreadPool.QueueUserWorkItem(New System.Threading.WaitCallback(AddressOf fun),ran.Next(0,10000)) Next 子線程 Private Sub fun(ByVal i As Object) i就為要傳遞的參數 End Sub __________________________________________________________________________ 说实话,不太懂, Randomize () 多线程,单线程我用都 ok 啊 __________________________________________________________________________