Tu código para generar números aleatorios genera números entre [3,5). Fíjate que el límite superior tiene el intervalo abierto, por lo que los posibles resultados son {3,4}.
Para generar números entre [3,5] el código es: <3 + rand() % 5-3+1>. Si entiendes lo que hace el operador módulo <%> está claro, este te devuelve el resto de dividir <rand()> entre 2 en tu caso. Ese resto siempre va a ser {0,1}. Entonces 3+{0,1}={3,4}. En cambio si haces módulo 3, te queda 3 + {0,1,2} = {3,4,5}. Suerte.
Edit: Además la carta que robas no es <numeroAleatorio>, <numeroAleatorio> es el número de cartas que robas.
Para generar números entre [3,5] el código es: <3 + rand() % 5-3+1>. Si entiendes lo que hace el operador módulo <%> está claro, este te devuelve el resto de dividir <rand()> entre 2 en tu caso. Ese resto siempre va a ser {0,1}. Entonces 3+{0,1}={3,4}. En cambio si haces módulo 3, te queda 3 + {0,1,2} = {3,4,5}. Suerte.
Edit: Además la carta que robas no es <numeroAleatorio>, <numeroAleatorio> es el número de cartas que robas.