Choosing reward issue

Code:

local Rewards = {
	["+1,500 Coins"] = 100;
	["+50 Gems"] = 40;
	["+1 Free Skip Stage"] = 15;
}

local ClaimButton = script.Parent.Circle.Claim

local function ChooseReward(GeneratedNum)
	
	for Reward, Chance in pairs(Rewards) do

		if GeneratedNum <= Chance then

			return Reward

		end

	end
	
end

ClaimButton.MouseButton1Click:Connect(function()
	
	local RNG = Random.new():NextNumber(0,100)
	
	print(RNG)
	
	local ChosenReward = ChooseReward(RNG)
	
	print(ChosenReward)
	
end)

It wont pick the +1 Free Skip Stage even if the chance is 15 or under

Because 15 is not only <= 15, but also <= 40 and <= 100, this would mean that ANY number generated should always return with the coins.

You not only have to check if GeneratedNum <= Chance, but also if GeneratedNum > NextChance

Im not familier with dictionaries so I cant actually help u with the code, but thats the big idea