PerInstanceRandom works only on Instanced Meshes, which is why it won’t work. There’s no way currently to randomize like this for just static meshes, so one of the things you could do is to have a Blueprint that generates the number for every one of it’s copies and passes it into the material via parameter. If you wan’t to keep it in the material, you can use pseudo-random UV offset - that will offset you object’s UVs in random directions using it’s world position. Here’s how to do it for objects without an atlas:
And for atlases you put the output of the previous node into a function containing this:
I find it decent enough, though at has some trouble with variance. I mean, sometimes you get multiple of the same result close to each other. Better than nothing though.