procedural generate mesh that fits each other
Use a the Cell fracture addon - Fracture addon - to break up your master outline object, then shrink each piece using a deform modifier with a negative value, OR use the margin variable in the script preferences to create a gap between elements.
Check out this tutorial if you are stuck - Cell Fracture addon tut