function getRandom1(conf,without,weight_index)
	local sum = 0
	for i = 1 ,#conf do
		if canCalc(i,without) then
			sum = sum + conf[i][weight_index]
		end 	
	end
	
	local r = math.random(1,sum)
	sum = 0
	for i = 1 ,#conf do 
		if canCalc(i,without) then
			sum = sum + conf[i][weight_index]
			if sum >= r then
				return i 
			end
		end
	end
end

function getRandom2(conf,without)
	local sum = 0
	for k,v in ipairs(conf) do
		if canCalc(k,without) then
			sum = sum + v.weight
		end
	end
	local r = math.random(1,sum)
	sum = 0
	for k,v in ipairs(conf) do
		if canCalc(k,without) then
			sum = sum + v.weight
			if sum >= r then
				return k
			end
		end 
	end
end

function getRandom3(conf)
	local sum = 0 	
	for k,v in ipairs(conf) do 
		sum = sum + v.weight
	end
	local r = math.random(1,sum)
	sum = 0
	for k,v in ipairs(conf) do 
		sum = sum + v.weight
		if sum >= r then
			return k
		end
	end
end

-- µÈ¼¶ÏÞÖÆ
function getRandom4(conf,without,weight_index,minLvIndex,maxLvIndex,human)
	local sum = 0
	for i = 1 ,#conf do
		if canCalc(i,without) and (not conf[i][minLvIndex] or
			 human and human.db.lv >= conf[i][minLvIndex] and human.db.lv <= conf[i][maxLvIndex]) then
			sum = sum + conf[i][weight_index]
		end 	
	end
	local r = math.random(1,sum)
	sum = 0
	for i = 1 ,#conf do 
		if canCalc(i,without) and (not conf[i][minLvIndex] or
			human and human.db.lv >= conf[i][minLvIndex] and human.db.lv <= conf[i][maxLvIndex]) then
			sum = sum + conf[i][weight_index]
			if sum >= r then
				return i 
			end
		end
	end
end

function getRandom5(human,conf,without,weight_index,job_index,sex_index)
	local sum = 0
	for i = 1 ,#conf do
		if canCalc(i,without) then
			local job = conf[i][job_index]
			local sex = conf[i][sex_index]
			if (job == 0 or human.db.job == job) and (sex == 0 or human.db.sex == sex) then
				sum = sum + conf[i][weight_index]
			end
		end 	
	end
	
	if sum == 0 then
		assert()
	end
	
	local r = math.random(1,sum)
	sum = 0
	for i = 1 ,#conf do 
		if canCalc(i,without) then
			local job = conf[i][job_index]
			local sex = conf[i][sex_index]
			if (job == 0 or human.db.job == job) and (sex == 0 or human.db.sex == sex) then
				sum = sum + conf[i][weight_index]
				if sum >= r then
					return i 
				end
			end
		end
	end
end


function getRandom6(conf,without)
	
	local sum = 0
	for i = 1 ,#conf do
		if canCalc(i,without) then
			sum = sum + conf[i]
		end 	
	end
	
	if sum == 0 then
		assert()
	end
	
	local r = math.random(1,sum)
	sum = 0
	for i = 1 ,#conf do
		if canCalc(i,without) then
			sum = sum + conf[i]
			if sum >= r then
				return i
			end
		end 	
	end

end


function canCalc(index,without)
	if not without then
		return true
	end
	if without then
		for k,v in ipairs(without) do 
			if index == v then
				return false
			end	
		end
	end
	return true
end