Rand generando los mismos numeros

Tengo un problema con el pequeño juego que hice.

#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
int span = 100;
srand(time(0));
int TheNumber = static_cast<double> (rand()) /RAND_MAX * (span -1) +1;
cout << "You need to guess the number between 1 and " << span << endl;
int mynumber;
int numberofAttempts = 0;

do {
    cout << ++numberofAttempts <<" Attempt: ";
    cin >> mynumber;
    if (mynumber > TheNumber)
        cout <<"Lower!" << endl;
    else if (mynumber < TheNumber)
        cout <<"Higher!" << endl;
} while (mynumber != TheNumber);

cout << "SUCESS!!!" << endl;
return 0;
}

Se supone que el juego genera un número aleatorio entre 0-100 y debes adivinarlo. Después de ejecutar este código 15-20 veces, los mismos números generaron incluso 8 veces (el número 2 en mi caso).

Sé que no hay un número aleatorio absoluto y que usa alguna fórmula matemática o algo para obtener uno. Sé que usarsrand(time(0)) lo hace dependiente de la hora actual. Pero, ¿cómo lo haría "más" al azar, ya que no quiero que sucedan las cosas que mencioné anteriormente?

La primera vez que lo ejecuté, el resultado fue 11, luego de ejecutarlo nuevamente (después de adivinar el número correcto), aún era 11, aunque el tiempo cambió.

Respuestas a la pregunta(3)

Su respuesta a la pregunta