I made a module, that when called will get some random challenges. However, sometimes, (Rarely though) the script will fail for some reason, and i made it so that if it is not successful it will give a warning:

function DailyChallenges.GetRandomChallenges(number)
	local keyset = {}
	for k, value in pairs(challenges) do
		if value.enabled == true then
			table.insert(keyset, k)
		end
	end
	if number > #keyset then
		number = #keyset
	end
	-- now you can reliably return a random key
	local randomChallenges = {}
	local usedNumbers = {}
	while #usedNumbers < number do
		local randomNumber = math.random(1, #keyset)
		if not table.find(usedNumbers, randomNumber) then
			local elem = {
				total = 0,
				completed = false,
			}
			randomChallenges[keyset[randomNumber]] = elem
			table.insert(usedNumbers, randomNumber)
		else
			print(usedNumbers, randomNumber)
			warn("Random number is not a part of used Numbers!")
		end
	end

	return randomChallenges
end

This is what i use to call the function:

challenges["Daily"] = DailyChallenges.GetRandomChallenges(3)

As you can see, the warn is here: (in the first script)

if not table.find(usedNumbers, randomNumber) then
			local elem = {
				total = 0,
				completed = false,
			}
			randomChallenges[keyset[randomNumber]] = elem
			table.insert(usedNumbers, randomNumber)
		else
			print(usedNumbers, randomNumber)
			warn("Random number is not a part of used Numbers!")
		end

When i am warned, i only get 2 quests instead of the three i sent for.

Any help would be great :)