weighted RAND for last clip is fine, but first and foremost we shouldn't check per tile. that's a really weird way of doing it.
imagine 10 soldiers with standard rifles, each with one clip containing 20 bullets. each soldier fires 5 shots. at the end of the battle, in the current system, you lose no bullets at all, since each clip has more than half of its bullets remaining. you get 50 bullets for free!
instead, the system should check for the total amount of bullets (10*15=150) and refill the available clips, resulting in 7 full clips and 2 empty ones, which are discarded, and one clip with 10 bullets, so you could argue that this one should be either discarded or turned into a full clip with a 50% chance.