# How to calculate percentage in weight selection system

I got this code from another devforum post that acts like a crate system with weights

``````local Items = {["Stick"] = 400, ["Club"] = 125, ["Sword"] = 50, ["Shield"] = 40}

local function GetRandom(set)
local sum = 0

for k, v in pairs(set) do
sum = sum + v
end

local r = math.random(sum)

for k, v in pairs(set) do
r = r - v

if r <= 0 then
return k
end

end
end

print(GetRandom(Items))
``````

I studied it for a bit and got a little understanding on how it works generally. However, i cant seem to find a way to calculate the weights in percentage. I can understand the fact that, if there are 5 varaibles in a set with the same weight, the percentage for all of them would be 100 / the number of variables. But when one variable has a different weight, thats when i reach a dead end. Is there a proper formula on how to calculate these percentages? Any help would be appreciated!

For your case to get each weight you could use `( Item's Weight / Total Weight ) * 100`.

2 Likes