Have you tried changing the random seed of the particle system settings? When you duplicate an object with a particle system, the particle system still retains a reference to the original settings, in essence an instance. You need to make each particle system settings copy unique, then change the random seed for the newly unique particle settings to achieve your goal.
Right!
In the Particle System tab, near the top, where it says Seed: 0
I right-clicked and added a PyDriver that simply says noise.random()
In the Graph Editor view for Drivers, Type: Scripted Expression,
it did show a different number every time I looked at it,
but the Particle System insisted that Seed: 0 (even though it was purple).
SOLUTION: int( 99 * noise.random() )
That’s because the Particle System seed is supposed to be an integer!! :RocknRoll: