I've knocked up the attached example using FloorGenerator, the problem with floor gen is the mapping.

So I have 3 brick sizes, 800*140mm, 800*80mm and 800*60mm.

Each row contains the same brick, the rows are randomized in terms of which brick size is used, each row is offset, all bricks need an individual uvw map of 1000*1000*1000mm centred to each 'brick'

There are 3 different materials, Basalt, Lavastone and Quartz, and I have 3 different version of each material, so 9 materials in total. The materials need to be randomized on the bricks regardless of brick size

What is the most efficient way to achieve this?

So I have 3 brick sizes, 800*140mm, 800*80mm and 800*60mm.

Each row contains the same brick, the rows are randomized in terms of which brick size is used, each row is offset, all bricks need an individual uvw map of 1000*1000*1000mm centred to each 'brick'

There are 3 different materials, Basalt, Lavastone and Quartz, and I have 3 different version of each material, so 9 materials in total. The materials need to be randomized on the bricks regardless of brick size

What is the most efficient way to achieve this?