It depends on if you are trying to recreate physically poring cereal in or just want to fill it visually?
The latter could be done in grasshopper in the mac WIP version.
Steps that I would take to do this in grasshopper:
- Create a shape that represents inside area of container
- populate shape with random points
- create a bounding box for each cereal item and order them from largest to smallest
- for each point, move largest cereals from Bounding box centroid to the random point
- if the bounding box intersects container walls or another cereal bounding box then replace with the next largest cereal and repeat until either one of the cereals fit or none of them do
- move to next random point
The random point array needs to be appropriately dense for this to work so might take some trial and error.