The South African Rand (ZAR) trades at very favorable rates to most international currencies. There’s no need to bring large amounts of hard currency cash or to buy Rands in advance.
Major international credit/debit cards (for instance, Visa, MasterCard, and, to a lesser extent, American Express) can be used to draw local currency at 24-hour ATMs throughout the country (the one exception being in most national parks and game reserves) and to pay directly for almost all services and goods.
That said, it’s a good idea to carry a bit of hard currency cash as a fallback, say the equivalent of around US$200-400; this can be exchanged into Rands at any bank or Bureau de Change.