Я пишу параллельную программу, используя open mp, в которой я генерирую матрицу случайных чисел с плавающей запятой, а затем выполняю ряд вычислений. В настоящее время я хочу сделать шаг, на котором я генерирую матрицу, работающую параллельно, но у меня есть проблема, заключающаяся в том, что функция rand() не предназначена для одновременного запуска. Я не хочу использовать блокировки для обеспечения мьютекса на rand, потому что это единственное, что делается в цикле, и, вероятно, было бы более эффективно запускать его последовательно. Есть ли способ сделать этот шаг эффективно параллельно?
Здесь, если текущий код для этой части (без мьютекса на rand);
#pragma omp parallel default(private)
{
int i= omp_get_thread_num();
for(int j=0; j<cols; j++)
matrix[i][j]= rand()%1000 + (float)(rand()%100)/(float)(rand()%1000);
}