there's many videos on youtube on how to do this. however, noone ever mentions "inducing timing drift", which is something I do that makes MUCH more of a humanizing effect than just randomizing hit velocities.
let's say your whole song is at 120bpm. do you think a real drummer is going to play at 120bpm all the way through the song? No, they will not. Not even the best drummers can do it, even if they are playing to a clicktrack.
after you have the basics of the song mapped out, then go through each measure and insert a tempo change of -/+ 1/2/3 bpms. for instance, if the song starts at 120bpm, make measure 2 @ 122 bpm, then measure 3 @ 121bpm, then measure 4 @ 119bpm, then measure 5 @ 122bpm.
placing slight tempo changes like this throughout the entire song will make it flow better, and to the listener sound more real like a drummer would sound live, instead of programmed.
the 3 main things I will do are:
1) create a lot of pattern variations of the same parts/rhythms. this takes the most time, but is the most rewarding.
2) randomize hit velocities
3) slight tempo drifts
experiment with those 3, and you'll notice sooner or later that your programmed beats/drums will have more character, and so will other listeners.