Проблемы с заполнением генератора псевдослучайных чисел более одного раза?

Я видел довольно много рекомендаций, чтобы не заполнять генераторы псевдослучайных чисел более одного раза за исполнение, но никогда не сопровождалось подробным объяснением. Конечно, легко понять, почему следующий пример (C / C ++) не очень хорошая идея:

int get_rand() {
  srand(time(NULL));
  return rand();
}

с момента звонкаget_rand несколько раз в секунду дает повторяющиеся результаты.

Но не будет ли следующий пример приемлемым решением?

MyRand.h

#ifndef MY_RAND_H
#define MY_RAND_H

class MyRand
{
  public:
    MyRand();
    int get_rand() const;
  private:
    static unsigned int seed_base;
};

#endif

MyRand.cpp

#include <ctime>
#include <cstdlib>
#include "MyRand.h"

unsigned int MyRand::seed_base = static_cast<unsigned int>(time(NULL));

MyRand::MyRand()
{
  srand(seed_base++);
}

int MyRand::get_rand() const
{
  return rand();
}

main.cpp

#include <iostream>
#include "MyRand.h"

int main(int argc, char *argv[]) 
{
  for (int i = 0; i < 100; i++) 
  {
    MyRand r;
    std::cout << r.get_rand() << " ";
  }
}

т.е. хотяMyRand: s конструктор вызывается несколько раз подряд, каждый вызовsrand имеет другой параметр. Очевидно, что это не потокобезопасно, но опять же не являетсяrand.

Ответы на вопрос(4)

Ваш ответ на вопрос