I think the problem is the "Destroy" command only has an effect at the end of the frame (it's due to how C2 works, it's not the fault of your code). A destroyed item can still be picked in the same frame it's been destroyed.
Try creating a Boolean for your Spr_test called "Destroyed". Then, change your code a bit :
For "MakeItems" = 1 to 3
Pick an instance of spr_test at random with "Destroyed = True" (just add this condition under the "pick at random" part)
--> set spr_test.var to a random number between 1 and 3
if spr_test.var = 1 --> create newSprite1 at location of spr_test --> set spr_test.Destroyed to True and delete spr_test
if spr_test.var = 2 --> create newSprite2 at location of spr_test --> set spr_test.Destroyed to True and delete spr_test
if spr_test.var = 3 --> create newSprite3 at location of spr_test --> set spr_test.Destroyed to True and delete spr_test
Edit : well I was too slow to answer ^^
You could indeed use the spr_test.var as a sort of boolean if it's starts at 0, yup.