Сверхбыстрая потокобезопасная функция rand в C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сверхбыстрая потокобезопасная функция rand в C++

Сообщение Anonymous »

Код: Выделить всё

void NetClass::Modulate(vector  & synapses )
{
int size = synapses.size();
int split = 200 * 0.5;

for(int w=0; w < size; w++)
if(synapses[w].active)
synapses[w].rmod = ((rand_r(seedp) % 200 - split ) / 1000.0);
}
Функция rand_r(seedp) серьезно мешает моей программе. В частности, это замедляет меня в 3 раза при последовательном запуске и в 4,4 раза при работе на 16 ядрах. rand() — это не вариант, потому что он еще хуже.
Могу ли я что-нибудь сделать, чтобы упростить это? Если это будет иметь значение, я думаю, что смогу потерпеть потерю с точки зрения статистической случайности. Можно ли предварительно создать (перед выполнением) список случайных чисел, а затем загрузить его в стеки потоков?

Подробнее здесь: https://stackoverflow.com/questions/828 ... d-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»