array of random cylindrical extrusions
I would do it that way :

First, create your cylinder by using an elongated rectangle. Delete the bottom face.



Add a subdivision surface modifier. Don't forget to smooth it out with Object > Smooth



Add an array modifier to get your row of 3



This is the trickiest part. Add an empty in your scene. Add an array modifier with a constant offset and set the empty as an object offset :



Drive the empty rotation depending on the array count :



Add a displacement modifier, add a new texture and set the direction to "RGB to XYZ".



In the texture tab, set the type to "Clouds" and the color to "Color". Increase the size. There is a soft limit of 2 but you can manually input higher values. 



Tweak the displacement modifier strength so that it is believable.

Result :



If you want lower frenquency in your displacement noise, you can add another displacement modifier with a new texture, set to a higher size.



I didn't go full non-destructive but you can still tweak some parameters :



Addition (Thanks R. Betts :) ) :
To give a nicer transition between the base of the cylindrical thingies and the plate, I modified the base mesh to have a square extended base :



Next add a vertex group, and make sur only the top vertices have a weight of 1.



In your displacement modifiers, make sure the group is selected so that the base doesn't get displaced :



Final result (Eevee - By no means supposed to look realistic :) ):



The blend file :