Ok, here is a capx that does it in one event.
https://dl.dropboxusercontent.com/u/85412219/forumposts/RandomLoot.capx
I was going to get fancy with ranges for the random values but did it the quick way, so the instance variable for the choice is like:
"0,0,0,0,0,1,1,1,2,2,2,2,2,3,3,3,3,4"
it grabs one of those numbers and uses it to grab that number out of a string of loots:
"gold (5-10),sword,armor,shield,diamond"
so there is one out of 18 chance for a diamond.
You can change the amount of numbers to increase odds, it counts how many are there before choosing.
The number of loots is determined by the number it pulls, so if you have a 5, there should be 5 loots, or it will grab number 4 instead.
Edit: if you don't want to download, the event:
On Touched Monsters | Set Text to tokenat(Monsters.loottype,int(tokenat(Monsters.Chance,random(tokencount(Monsters.Chance,",")+1),",")),",")
You mentioned a loot table, if you want to point at those directly, you could drop the loot string, and put the numbers for your loot table instead.
I.E. Monsters.loot="21,21,21,21,21,34,34,34,8,8,8,8,8,36,36,36,36,36"
loot = int(tokenat(Monsters.Chance,random(tokencount(Monsters.Chance,",")+1),","))