hred -n1 /dev/sda" is faster and more reliable then the the above methods.
Using /dev/random will likely not complete in a reasonable time because there is not enough entropy. Using /dev/urandom will fix that by creating more randomish stuff based in the real randomness it can get.
Using bs=4096 sets a chunk size. To a point larger chunk sizes are better.
Wiping with /dev/zero is probably adequate, but there may be some theoretical attacks (amplify the trace signal) that might theoretically yield some data.
Using a boot disk is the most reliable way to go, dd'ing a live partition is not a great idea as it could cause a freeze before system is finished.
A fair partial solution to remotely erade data might be to remove all user info, then dd if°/dev/urandom of=large.file; RM large.file and then use shred /dev/SDA - this will give greater certainty user data is deleted.
Note that there may Stoll be residual data on the drive (like around sectors marked bad) and even more so with SSD's due to over provisioning.