Мне было интересно, что igraph_rng_default() предоставляет генератор случайных чисел с потоком или нет, и если это так, то какой rng я должен использовать? Кроме того, если вы вызываете igraph_sbm_game в каждом потоке, генерация этих графов является потокобезопасной?Генератор случайных чисел Igraph в c
Edit: быть более ясным, это то, что я написал в своей программе:
#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 ...
Я думаю, вам следует разработать вопрос. Что вы имеете в виду с генератором случайных чисел с потоком? Вы пробовали его и нашли какую-то проблему? См. Также [ask]. –
Даже если он потокобезопасен, вероятно, лучше использовать отдельный RNG для каждого потока, потому что тогда нет никаких шансов на разглашение стандартного RNG. –
Как я могу назвать отдельные строки в разных потоках? –