The only way to really guarantee that data cannot be recovered is
(a) use full-disk encryption, so all sensitive data is already encrypted before it hits the media, and then
(b) destroy the encryption key when you no longer want the data on that media.
spinning disks
Yes, a single zero-fill, on a spinning disk, is adequate.
Civilian data recovery companies cannot recover data off spinning disks after a single zero-fill.
There is no evidence that anyone else can, either.
In spite of the popular urban legends you might have heard.
a b c d e
solid-state media
A zero-fill is probably inadequate on solid-state media, but using random-data-fill or multiple passes or both, aren't any better.
Solid-state "disks" typically have extra space used for wear-leveling that cannot be read or written to with normal tools.
Sensitive data that ends up in this extra space is not guaranteed to be erased,
no matter what data patterns you write and no matter how many passes you make.
See Is it enough to only wipe a flash drive once? .