Roblox — Шансометр или Шансомайзер

Автор: | 11 июля, 2026
Поделиться...

Собственно задачка простая: имеется таблица с шансами выпадения и надо выдавать случайный результат исходя из шансов получения записей.

Алгоритм простой. Складываем все шансы и генерим случайное число в этом интервале. Далее, в том же порядке, ищем в какой интервал попало полученное значение — это и есть результат.

-- пример шансометра

local tbl = {	-- таблица шансов
	one = 1,	-- что и с каким шансом
	two = 2,
	three = 7,
	four = 10,
	empty = 20
}
-- в сумме 40, каждый шанс - это доля от 40

-- на входе таблица с шансами, 
-- на выходе выпавший результат
function Shansometr(tbl)
	local total = 0
	for k, v in pairs(tbl) do
		total = total + v
		print(k, total)
	end
	local rnd = math.random(1, total)
	print("---------")
	print(rnd)
	local current = 0
	for k, v in pairs(tbl) do
		current = current + v
		if rnd <= current then
			return k
		end
	end
	return "ОЙ" -- правильный вариант: "empty"
end	

for i=1, 5 do
	warn(Shansometr(tbl))
	print("---------")
end

Поделиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *