Możesz rand() uzależnić od czego chcesz. Czasami nie warto wybierać czasu, bo na przykład atakujący będzie mógł łatwo zgadnąć, jakie hasło zostało wygenerowane.
W c++ jest 1 rand(), ale nic nie przeszkadza w pisaniu własnych. Istnieją również generatory sprzętowe. Są one o tyle lepsze, że są niedeterministyczne - generują na podstawie entropii otoczenia. Natomiast jeśli wydasz program, to nie możesz zakładać, że każdy będzie miał taki generator, chociaż od któregoś bodajże Pentium generatory są ładowane w procesor. Niestety C++ jest z założenia niezależny od platwormy, więc kożysta ze wzoru zamiast mocy procka.