您的位置:程序门 -> .net技术 -> vb.net



多线程下的随机数问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


多线程下的随机数问题[已结贴,结贴人:jeanun]
发表于:2007-04-03 14:51:12 楼主
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
发表于:2007-04-03 15:09:501楼 得分:0
没有人能帮忙?谢谢了。up一下~
发表于:2007-04-03 15:27:012楼 得分:5
在沒有改不給種子數字時,每次新產生隨機數時都會一樣的。理解決方法有二
1)由主線程產生隨機數,并把此數傳遞給子線程。
2)同樣為主線程產生一個隨機數,這數作為子線程產生隨機數的種子數,再產生新的隨機數。
发表于:2007-04-03 15:45:543楼 得分:0

每次   产生   随机数   前   使用  

randomize   ()  

问题解决

结帖
发表于:2007-04-03 15:57:174楼 得分:0
randomize()   没用的。每次还是都会一样的。
现在是多线程的问题...
****************************************************
chenxdb(菜鳥也瘋狂)   的方法有没有具体的例子??

现在如果我在产生随机数的时候.使用一个msgbox(),弹出点信息,它产生的随机数就不会重复的。为什么?
发表于:2007-04-03 16:04:365楼 得分:15
因为他使用时间作种子,多线程之行的时间差不多,所以种子一样,随机数也就一样
可以给每个线程一个不同的id,然后用id+时间作种子
发表于:2007-04-03 16:15:206楼 得分:0
我用   thread.currentthread.managedthreadid   和   datetime.now.millisecond   一起作为种子,这次生成的不一样的,要庆祝一下。另外谢谢各位的讨论。
发表于:2007-04-03 16:33:457楼 得分:0
主線程
                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
发表于:2007-04-03 20:23:038楼 得分:0
说实话,不太懂,

randomize   ()   多线程,单线程我用都   ok   啊


快速检索

最新资讯
热门点击