Tiles - Random

Hello,
I need some advice on solving a problem in Rhino/Grasshopper.

I have a surface that I need to fill with tiles of different colors. Each color is available only in certain tile sizes. I would like Grasshopper to generate random variations of how to fill the surface.

At the same time, I want to be able to specify, for example, the number of certain tiles or their maximum/minimum quantity.

Could someone advise me which components or commands you would use to approach something like this?
Thanks in advance for any help!

This can remind me of “ Rectangle false packing “ algorithm
Rectangle false "packing" (Sample and example) – Grasshopper