随机数发生器

时间:2010-03-03 15:19:12

标签: c random

我需要帮助从多个线程同时使用哪个随机数生成器,并获得更少的执行时间

1 个答案:

答案 0 :(得分:1)

实际上任何随机数生成器都有一些保存状态。要从多个线程调用时获得正确的行为,它必须使用线程本地存储作为其存储状态,或者使用对存储状态的同步访问。

如果它使用对共享状态的同步访问,那通常会相当慢。

如果它使用线程本地存储,则会引入额外的问题,即使用它的每个线程必须单独为种子生成种子,确保种子不相同(例如,如果您使用每个线程中的公共srand(time(NULL)),很可能多个线程将获得相同的种子并产生相同的输出序列。但是,一旦你合理地播种它,调用通常会相当快 - 与单线程相比,只有减速(可能)具有间接级别才能到达线程本地存储。