You’re using a Math.Random node to generate the list of colors. Since those colors will randomly be selected on each run, you’re going to get random results on each run.
To get a more consistent approach try making a range from 1-755, spacing the values by the total count of beam types. A code block like this should do:
1…765…#(List.Count(a))
Then Chop the list into three parts - one for the all red group, one for the all green group, and one for the all blue group.
Next use an if statement statement to convert the numbers into assignable color values (less than 256). Something like this in a code block will get you started:
A>510? A/3 : A>255? A/2 : A
You can now wire the numbers into the color creation node accordingly. After that your colors will change uniformly based on the number of types in your job. It won’t have any yellows//purples/cyan colors, but those can be added by working with a 1530 deep list.
You can also use some list manipulation to shuffle the nodes in a seemingly random -reproducible way. tricks (list.remove and list.getitematindex nodes with a mid range number, feeding those into a list.create, and repeat the process a half dozen times), but I don’t know that there is any real value to that.