There’s yet another fine addition to my blender-addons repository on GitHub. The object_place_on_surface.py operator allows to easily place selected object on designated surface (object with the name… surprise, surprise… “surface”) by simply placing the 3D cursor at target location and pressing the P key on the keyboard. Objects are placed with their Z direction aligned to the surface normal. Choices for amount of alignment and whether to use flat or smooth normals are also present. In many instances this is a more convenient alternative to particle systems with density weighting and/or placing object copies by hand. Extremely useful for myself, hope it serves you as well. Enjoy!
Credit: Images in this post use the following hand model authored by DennisH2010 from Blendswap made available under CC-BY-NC license.