arts = {
[1] = {mass = 1},
[2] = {mass = 14},
[3] = {mass = 7},
[4] = {mass = 8},
[5] = {mass = 11},
}
function GetRandomArt()
local sum
local n
for id, props in arts do
sum = sum + props.mass
end
n = random(sum)+1
local start, finish, shift = 0, 0, 0
for id, props in arts do
finish = start + props.mass
if start<=n and n<finish then
return id
else shift = finish-start
start = finish
finish = start+shift
end
end
return 0
end
Можно ещё вручную составить таблицу 95 элементов (необязательно всех), для каждого из которых указать массу - чем больше масса, тем больше шанс выпадения.