randomly spawning objects onto a procedurally generated landscape?

i want to know how to randomly instantiate objects such as trees and animals onto procedurally generated terrains and how to ensure that the height value of those objects matches up with the height of the ground they are instantiated on?

Anyone have any ideas, im aware now that i can call my vertices/ height map for the height values of the terrain but actually calling them is something im unsure how to do. My teacher also said at if i can allow them to spawn in a radius around the player at random X and Z coords then i can add a ray cast to the bottom of the objects and use them to move the objects to where they need to be. I understand what i need to do but im not sure how i do it.