我想知道igraph_rng_default()是否提供线程安全的随机数生成器,如果是这种情况,我应该使用哪个rng?此外,如果您在每个线程中调用igraph_sbm_game,则生成这些图形是线程安全的吗?
编辑: 要更清楚,请看我在程序中编写的内容:
我的问题是,由于igraph_sbm_game根据所选的随机数生成器生成随机图,这种随机性是否保证是线程安全的?换句话说,使用默认的igraph随机数生成器,我可以以线程安全的方式获得随机数吗?我的疑问来自于igraph_sbm_game()函数不需要种子以及我找不到igraph使用哪个随机数生成器...
编辑: 要更清楚,请看我在程序中编写的内容:
#define N 2048
#define R 16
#define rngseed 1763984
int main(void)
{
igraph_rng_seed(igraph_rng_default(), rngseed);
#pragma omp parallel shared(some_shared_variables) private(some_private_variables)
{
igraph_matrix_t pref_matrix;
igraph_matrix_init(&pref_matrix, R, R);
igraph_vector_int_t block_sizes;
/*SBM initialization*/
igraph_vector_int_init(&block_sizes, R);
...
...
#pragma omp for ordered schedule(static,1)//ordered schedule(static,1) per risultati in ordine #pragma omp ordered per stampare in ordine
for(q1=0;q1<100;q1++)
{
igraph graph;
igraph_sbm_game(&graph, N, &pref_matrix, &block_sizes, IGRAPH_DIRECTED, IGRAPH_NO_LOOPS);
....
}
}
我的问题是,由于igraph_sbm_game根据所选的随机数生成器生成随机图,这种随机性是否保证是线程安全的?换句话说,使用默认的igraph随机数生成器,我可以以线程安全的方式获得随机数吗?我的疑问来自于igraph_sbm_game()函数不需要种子以及我找不到igraph使用哪个随机数生成器...