多线程中rand()的使用

来源:互联网 发布:linux mv 不覆盖 编辑:程序博客网 时间:2024/04/27 21:03

最近做了一个小项目,用到 rand(),对 rand() 在多线程中的使用有一点心得。

rand() 通常在调用之前调用 srand ( unsigned ( time(NULL))),这是以时间为种子,产生一个随机数序列。

对于多线程来说,若未对各个线程进行 srand(),则各线程中rand() 的输出是一样的;同理,若各个线程同时批量调用 srand ( unsigned ( time(NULL))) 也是不行的,因为种子可能相同。

应对方法是对各个线程使用不同的种子,比如GetCurrentThreadId(),以当前线程ID为种子。微笑


0 0
原创粉丝点击