Hola solo me gustaria añadir, que el time(NULL) devuelve en tiempo en segundos, por lo que si haces un for para generar varios numeros aleatorios, es probable que todos sean los mismos (por que en el srand, la semilla es el mismo segundo), en cambio si usas la función timeGetTime() (debes incluir windows.h creo) dentro del srand( srand(timeGetTime()) ) el tiempo te es devuelto en milisegundos y el valor "random" sera mas creible.
Tambien me gustaria decir que este metodo de conseguir numeros aleatorios es bastante lento y si se necesita que la aplicación sea lo mas rapida posible (como es un videojuego) es mejor crearse arrays con numeros aleatorios previamente creados (ya sea a mano o usando lo anterior solo una vez al construir el objeto) y luego tener una variable que te indique la posicion del array en la que te encuentras y al pedir un numero aleatorio, devuelves el valor del array con la posición del entero, y sumas uno a esa variable, este metodo es mas fastidioso pero es mas rapido.
Espero a ver sido de ayuda, salu2.