I want to achieve the most purest "possible" random number each time
Then you should immediately abandon rand() entirely, not to mention taking the result modulo n, which introduces bias.
The facilities in the header <random> are a step in the right direction, but all those generators are psuedorandom. If you need a true [CS]RNG or, use your operating system's facilities directly - there may be a hardware RNG.
Do I initialize it in in the constructor so it will affect all member functions using rand()?
No - the state of rand() is global, so seed it globally, when the program starts.