最近做了一个小项目,用到 rand(),对 rand() 在多线程中的使用有一点心得。
rand() 通常在调用之前调用 srand ( unsigned ( time(NULL))),这是以时间为种子,产生一个随机数序列。
对于多线程来说,若未对各个线程进行 srand(),则各线程中rand() 的输出是一样的;同理,若各个线程同时批量调用 srand ( unsigned ( time(NULL))) 也是不行的,因为种子可能相同。
应对方法是对各个线程使用不同的种子,比如GetCurrentThreadId(),以当前线程ID为种子。
本文介绍了在多线程环境下使用rand()函数时,如何通过使用不同种子来确保随机数序列的独特性。通过当前线程ID作为种子,避免了多个线程产生相同随机数序列的问题。
4828

被折叠的 条评论
为什么被折叠?



