I dont know Who did it , but i saw a very elegant solution for ur problem in the .cap of a spaceshooter.
So excuses to the "Who" person for not mentioning him/her as source.
But this person filled every cell of the field with an invisible square object. On the moment he builded something on the cell, he erased that object. Moment the cell became empty he spawned an instance of the object on that place to mark it as Empty.
Dooing so gives u a Great advance by using "pick random".
Lets Call the object TheEmpty.
Then "pick a random TheEmpty" will only pick places where nothing is build yet. Because TheEmpty is only present on empty places.
To do this for 3 chests, you make a loop from 1 to 3. Something like this.
(event) For loop "Here_to_stay" 1 to 3
(event) Pick a random "TheEmpty"
_______________________________(action) create "chest" on "TheEmpty"'s position
_______________________________(action) destroy "TheEmpty"
When i saw that solution, i was very very pleased with the straightforwardiness (guess thats no word), and with the simplicity
Do you need a .cap ? i can when i am home, at work at the moment