хмм...что то я все равно не понял почему один раз нельзя!? можно еще раз?
Почему "нельзя"? Можно в зависимости от того что Вы хотите получить. По простому говоря, значение генератора случайных чисел копируется в приватные данные каждой нитки. Это хорошо, т.к. гарантирует воспроизводимость: qrand() в одной нитке не зависит от других. Если же не нравится что 2 и более ниток выдают те же числа - надо сделать srand() в самой нитке. Использовать привязки к таймеру - в этом случае получаем невоспроизводимость - могут быть разные результаты при 2 запусках одной программы. Это может быть желательно или нет. Если нужна воспроизводимость, то привязываться к this и.т.п - ненадежно. Лучше напр. так
C++ (Qt)
uint NextSRand( void )
{
static uint theValue = 100;
static QMutex mutex; // это должно быть static
QMutexLocker lock(&mutex);
return ++theValue;
}
// использование в нитке
qsrand(NextSRand());