Okay that can get complicated a bit. You will have to keep track of which animation is already in use, if you use a random function to call the animation, you can keep an array with all values 0, lets say when animation 5 is called, you make the 5th cell of the array to 1 which means that animation is in use.
You will probably have to modify the random function a bit, add a global variable called animations_In_Use set it to 0 on start, then system -> set global variable -> animations_in_use = random_number_function. As a sub event array compare at x -> Array[animations_In_use] == 1, if true recall the event again to generate another random number, if its false spawn the animation.
Next you will need to keep track if bullet with animation is out of screen, You can assign the animation number of the array to local variable, and add an event like bullet is visible on screen( inverted) bullet id = 5, if its true reset the cell 5 to 0.
Its pretty complicated to pull of, i hope i gaved you an idea on how to make it.